c++---多态
多态按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。
多态分为两类:
静态多态:函数重载和运算符重载属于静态多态,复用函数名
动态多态:派生类和虚函数实现运行时多态
区别:
静态多态的函数地址早绑定--编译阶段确定函数地址
动态多态的函数地址晚绑定--运行阶段确定函数地址(用virtual创建虚函数)
动态多态满足条件
1.有继承关系
2.子类重写父类的虚函数
动态多态的使用
父类的指针或者引用指向子类对象
纯虚函数和抽象类
在多态中,通常父类中虚函数的实现是毫无意义的,主要都是调用子类重写的内容,
因此可以将虚函数改为纯虚函数
纯虚函数语法
virtual 返回值类型 函数名(参数列表)=0;
当类中有了纯虚函数,这个类也称为抽象类
抽象类特点
无法实例化对象
子类必须重写抽象类中的纯虚函数,否则也属于抽象类
利用虚析构或纯虚析构可以解决父类指针释放子类对象时不干净的问题
如果子类中没有堆区数据,可以不写为虚析构或纯虚析构
拥有纯虚析构函数的类也属于抽象类
浙公网安备 33010602011771号