虚析构函数有什么用?
虚析构函数一般用在父类中,如果父类的虚构函数不定义为 virtual ,当父类指针指向子类对象时,delete 该对象时,不会调用子类的destructor, 只有父类的析构函数定义为 virtual,才会调用子类的 destructor。
总的来说虚析构函数是为了避免内存泄露,而且是当子类中会有指针成员变量时才会使用得到的。也就说虚析构函数使得在删除指向子类对象的基类指针时可以调用子类的析构函数达到释放子类中堆内存的目的,而防止内存泄露的.
下面举例说明:
#include<iostream>
using namespace std;
class ClxBase
{
public:
ClxBase() {
};
virtual ~ClxBase() {
cout<<"delete ClxBase"<<endl; };
virtual void DoSomething() {
cout << "Do something in class ClxBase!" << endl;