虚析构函数

来源:互联网 发布:jsp中引入js文件 编辑:程序博客网 时间:2024/06/01 11:30

看MFC CDialog和CWnd你会发现它的析构函数全部都是虚函数.这是为啥呢? 有啥好处呢? 

直接搬网上的结论过来了,有点道理

 

lass ClxBase
{
public:
    ClxBase() {};
    
virtual ~ClxBase() {};

    
virtual void DoSomething() { cout << "Do something in class ClxBase!" << endl; };
};

class ClxDerived : public ClxBase
{
public:
    ClxDerived() {};
    
~ClxDerived() { cout << "Output from the destructor of class ClxDerived!" << endl; }; 

    
void DoSomething() { cout << "Do something in class ClxDerived!" << endl; };
};

    代码

ClxBase *pTest = new ClxDerived;
pTest
->DoSomething();
delete pTest;

在这种情况下,保证ClxDerived的析构函数也能够被执行到.

原创粉丝点击