C++析构函数为什么要为虚函数

原创 2013年12月04日 12:20:12

一句话:避免内存泄露。


示例代码如下:

 

class Base

{

public:

  Base(){m_p1=new int(1);}

  ~Base(){delete m_p1;}

protected:

  int *m_p1;

};

 

class Derive:public Base

{

public:

   Derive(){m_p2=new int(2);}

   ~Derive(){delete m_p2;}

private:

  int *m_p2;

};

 

int main()

{

  Base* pDerive=new Derive;

  delete pDerive;

  return 0;

}


上面的程序将产生内存泄露,因为只会调用Base的析构函数,而不会调用Derive的析构函数。

C++中虚析构函数的作用及其原理分析

参考http://blog.csdn.net/xiamentingtao/article/details/55517203 C++中的虚析构函数到底什么时候有用的,什么作用呢。 一.虚析构函数的...
  • derkampf
  • derkampf
  • 2017年03月15日 00:13
  • 1644

C++ 中 父类的虚 析构函数_legend

     C++  父类虚析构函数  (1)C++虚函数 :  1). C++ 多态 :  将子类对象指针赋值给父类指针,然后通过父类指针来调用  子类中重写的虚函数。  如果在重...
  • legend050709
  • legend050709
  • 2014年05月14日 19:03
  • 1570

基类的纯虚析构函数一定要予以实现

纯虚函数 纯虚函数是一种特殊的虚函数,在许多情况下,在基类中不能对虚函数给出有意义的实现,而把它声明为纯虚函数,它的实现留给该基类的派生类去做。这就是纯虚函数的作用。 虚函数是C++语言的精髓。含有纯...
  • friendbkf
  • friendbkf
  • 2015年05月17日 18:59
  • 1772

关于析构函数和纯虚函数

之前一直不知道,虚析构函数yo
  • guozhengdong
  • guozhengdong
  • 2014年09月29日 22:18
  • 963

C++类有继承时,析构函数必须为虚函数

虚函数与多态一文中讲了虚函数的用法和要点,但少讲了一点,就是虚函数在析构中的用法,本文就是修复一bug的。C++类有继承时,析构函数必须为虚函数。如果不是虚函数,则使用时可能存在内在泄漏的问题。假设我...
  • luoweifu
  • luoweifu
  • 2016年12月21日 09:24
  • 2255

C++多态之虚基类析构函数的作用

每个含有虚函数的类中都保存着一个指向虚表的指针,而虚表中保存了该类各个虚函数的地址。 而当子类对象过期时,需要被销毁,如果父类对象没有将析构函数声明为virtual,则在销毁子类对象时,只会调用父...
  • Artprog
  • Artprog
  • 2016年02月24日 21:48
  • 1186

虚析构函数的实现原理

虚析构函数的理论前提是执行完子类的析构函数,那么父类的虚构函数必然会被执行。那么当用delete释放一个父类指针所实例化的子类对象时,如果没有定义析构函数,那么将只会调用父类的析构函数,而不会调用子类...
  • qq_23225317
  • qq_23225317
  • 2016年10月14日 22:28
  • 1058

基类析构函数必须为虚函数否则会造成内存泄漏

看看下面程序有什么错误: #include using namespace std; class Father { public: Father(){}; ~Father...
  • asd199086
  • asd199086
  • 2016年08月14日 20:39
  • 1763

C++中虚的私有的析构函数的作用

很简洁的一句话就是,虚是为了
  • lipeng32768
  • lipeng32768
  • 2014年10月25日 08:45
  • 542

C++中基类的析构函数为什么要用virtual虚析构函数

C++中基类的析构函数为什么要用virtual虚析构函数, 弄清楚为什么。
  • IIcyZhao
  • IIcyZhao
  • 2013年09月22日 18:41
  • 4718
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++析构函数为什么要为虚函数
举报原因:
原因补充:

(最多只允许输入30个字)