这里有两个类
class Base { public: Base(){}; virtual ~Base(){ cout << "~Base()" << endl; } virtual void doSomething() { cout << "This is Base\n"; } }; class Test: public Base { public: Test(){}; ~Test(){ cout << "~Test()\n"; } void doSomething() { cout << "This is Test\n"; } }; int main(int args, char* argv[]) { Base *p = new Test(); p -> doSomething(); delete p; return 0; }这里的运行结果
This is Test ~Test() ~Base()
当删除Base类中~Base() 的virtual时,运行结果如下
This is Test ~Base()
这里,我们就可以看见,派生类的析构函数没有被调用,会造成内存泄漏的后果 因此,虚析构函数的作用就是:当用一个基类指针删除一个派生类对象时,派生类的析构函数才会被调用