虚析构函数

2017-01-13 19:12:55来源:CSDN作者:qq_35856092人点击

首先给出程序示例。如果利用指针删除派生类的对象时,该程序利用的是基类指针指向派生类的对象,因此只调用了基类的析构函数,派生类的析构函数将不会调用。

#include <iostream>using namespace std;class son{public:    ~son(){ cout << "son"; };};class grandson :public son{public:    ~grandson(){ cout << "grandson"; };};int main(){    son * pson;    pson = new grandson;    delete pson;    return 0;}

因此我们可以可用虚析构函数,先调用派生类的析构函数,然后调用基类的析构函数:

#include <iostream>using namespace std;class son{public:    virtual ~son(){ cout << "son"; };};class grandson :public son{public:    ~grandson(){ cout << "grandson"; };};int main(){    son * pson;    pson = new grandson;    delete pson;    return 0;}

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台