动态多态满足条件
- 有继承关系
- 子类重写父类虚函数 virtual修饰的成员函数,子类中可加可不加virtual
动态多态使用
父类的指针引用作为函数参数,在函数中调用父类的成员函数,实际上是子类的成员函数
Animal &animal
指向子类的对象
或者
AbstrCalculator * a = new addCalculator;
a.getResult();
delete(a);
创建父类指针,指向new子类,记得销毁
纯虚函数
virtual 返回值类型 函数名(参数列表) = 0;
类:抽象类 和虚函数的区别
无法实例化对象
子类必须重写虚函数
虚析构和纯虚析构
只调用父类析构函数,不调用子类的析构函数,需要引入虚析构
~virtual Animal() = 0;
纯虚析构报错
需要具体的实现,可以在类外实现
用法:在子类中开辟堆区时,用来delete堆区指针