文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>为什么C++析构函数前面有时需要 virtual

为什么C++析构函数前面有时需要 virtual

时间:2011-02-16  来源:jackdesk

#include <iostream>

using namespace std;
 
class Base{
  public:
    virtual ~Base() {cout<<"~B"<<endl;}
};
 
class Derived:public Base{
  public:
    virtual ~Derived() {cout<<"~D"<<endl;}
};
 
int main (){
  Base *b=new Derived;
  delete b;
}
 

 以上代码执行结果是:

~D

~B

对于析构函数使用虚函数的解释,是这样的,因为是使用语句  Base *b=new Derived;来创建的对象b,如果,我们不把析构函数声明为虚函数,那么实际上,在对象生命周期结束时,调用的将只是基类Base的析构函数,而派生类Derived的析构函数将是不调用的,你可以试验一下,此时,只打印~B。而我们为了正确地释放对象,所以要将析构函数声明为虚函数,这时,基类和派生类的析构函数就都会调用了。

 

 

 

排行榜 更多 +
别惹神枪手安卓版

别惹神枪手安卓版

冒险解谜 下载
坦克战争世界

坦克战争世界

模拟经营 下载
丛林反击战

丛林反击战

飞行射击 下载