多态使用时,如果子类中有属性开辟到堆区,那么父类指针在释放时无法调用到子类的析构代码

 

解决方式:将父类中的析构函数改为**虚析构**或者**纯虚析构**

 

虚析构和纯虚析构共性:

* 可以解决父类指针释放子类对象

* 都需要有具体的函数实现

虚析构和纯虚析构区别:

* 如果是纯虚析构,该类属于抽象类,无法实例化对象

 

虚析构语法:

`virtual ~类名(){}`

纯虚析构语法:

` virtual ~类名() = 0;`

`类名::~类名(){}`