C++类和对象-多态
分类:
静态多态:重载(早绑定,编译阶段确定函数地址)
动态多态:派生类和虚函数实现运行时多态(晚绑定,运行阶段确定函数地址)
## 虚函数: ## 多态好处: 1、组织结构清晰 2、可读性强
3、利于前期和后期拓展以及维护 ## 纯虚函数和抽象类:
父类中的虚函数一般无意义,所以可以简写成纯虚函数
带纯虚函数的类称为抽象类
语法:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24class RNG
{
public:
virtual void FW()
{
cout << "RNG不行" << endl;
}
};
class XiaoHu: public RNG
{
virtual void FW()
{
cout << "Xiaohu不行" << endl;
}
};
void print(RNG& rng)
{
rng.FW();
}
void test_vir()
{
XiaoHu LYH;
print(LYH); //输出"Xiaohu不行"
}virtual 返回值类型 函数名 (参数列表) = 0
特点:无法实例化对象 ## 虚析构和纯虚析构
如果子类中有属性开辟到堆区,父类指针释放时无法调用到子类的析构代码
因此,需要将父类的析构函数改为虚析构 特点:
1、可以解决父类指针释放子类对象 2、需要有具体的函数实现
纯虚析构需要定义,也需要实现