C++虚析构函数

来源:互联网 发布:js trim 编辑:程序博客网 时间:2024/06/09 17:12

如果基类中存在一个指向动态分配内存的成员变量,并且基类的析构函数中定义了释放该动态分配内存的代码,那么就应该将基类的析构函数声明为虚函数,这样可以将子类对象中的开辟的动态空间回收。

#include <iostream>using namespace std;//基类class Base{private:    int *a;public:    Base();    virtual ~Base(){ cout<<"Base destructor"<<endl; }};Base::Base(){    a = new int[100];    cout<<"Base constructor"<<endl;}//派生类class Derived: public Base{private:    int *b;public:    Derived();    ~Derived( ){ cout<<"Derived destructor"<<endl; }};Derived::Derived(){    b = new int[100];    cout<<"Derived constructor"<<endl;}int main( ){   Base *p = new Derived;   delete p;   return 0;}

运行截图

这里写图片描述

0 0
原创粉丝点击