C++多态性:虚函数、抽象类与动态关联
该思维导图阐述了C++多态性的概念、实现方式及应用。它首先介绍了多态性作为面向对象编程核心概念,通过继承和虚函数在基类引用或指针调用派生类函数时实现。以图形类层次结构为例,详细讲解了虚函数如何实现运行时动态多态性,包括静态关联与动态关联的区别,以及声明虚函数的必要条件和虚析构函数的重要性。最后,介绍了纯虚函数和抽象类,阐明了抽象类不能实例化但可用于继承的特性,并以Animal、Dog和Cat为例进行了说明。
源码
# C++多态性
## 12.1 什么是多态性
### 面向对象编程核心概念
### 继承和虚函数实现
#### 基类与派生类关系
#### 虚函数机制
### 基类引用或指针调用派生类函数
#### 隐式类型转换
#### 函数重写与调用
## 12.2 一个典型的例子
### 图形类层次结构
#### 基类Shape
##### 属性:名称、颜色、面积
#### 派生类Circle
##### 属性:半径
##### 方法:重写draw()
#### 派生类Rectangle
##### 属性:宽度、高度
##### 方法:重写draw()
#### 派生类Triangle
##### 属性:边长
##### 方法:重写draw()
## 12.3 利用虚函数实现动态多态性
### 12.3.1 虚函数的作用
#### 运行时决定函数版本
#### 基类声明为虚,派生类重写
#### 多态性实现示例
### 12.3.2 静态关联与动态关联
#### 编译时静态类型调用
#### 运行时实际类型调用
#### 性能对比与适用场景
### 12.3.3 在什么情况下应当声明虚函数
#### 基类指针或引用调用派生类函数
#### 不同派生类不同实现
#### 设计模式中的应用
### 12.3.4 虚析构函数
#### 类含虚函数时析构函数应为虚
#### 正确调用派生类析构函数
#### 避免资源泄露案例
## 12.4 纯虚函数与抽象类
### 12.4.1 没有函数体的纯虚函数
#### 基类声明无实现
##### 语法示例
#### 使基类成为抽象类
#### 设计意图与约束
### 12.4.2 不能用来定义对象的类——抽象类
#### 至少一个纯虚函数
#### 不能实例化,用于继承
#### 设计原则与好处
### 12.4.3 应用实例
#### Animal抽象类
##### 属性:名称、年龄
##### 纯虚函数:makeSound()
#### Dog具体类
##### 重写makeSound():发出“汪”声
#### Cat具体类
##### 重写makeSound():发出“咪”声
#### 多态性如何在实际应用中发挥作用
图片