多态使用时,如果子类中有属性开辟到堆区,那么父类指针在释放时无法调用到子类的析构函数。
解决方式:
将父类中的析构函数改为虚析构和纯虚析构
虚析构的语法:
virtual ~类名(){}
纯虚析构的语法:
virtual ~类名() = 0;
类外实现如下:
类名::~类名(){}
多态使用时,如果子类中有属性开辟到堆区,那么父类指针在释放时无法调用到子类的析构函数。
解决方式:
将父类中的析构函数改为虚析构和纯虚析构
虚析构的语法:
virtual ~类名(){}
纯虚析构的语法:
virtual ~类名() = 0;
类外实现如下:
类名::~类名(){}