虚析构函数的作用

xiaoxiao2021-02-27  364

虚析构函数的作用

这里有两个类

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()

这里,我们就可以看见,派生类的析构函数没有被调用,会造成内存泄漏的后果 因此,虚析构函数的作用就是:当用一个基类指针删除一个派生类对象时,派生类的析构函数才会被调用

转载请注明原文地址: https://www.6miu.com/read-3316.html

最新回复(0)