码迷,mamicode.com
首页 > 其他好文 > 详细

为多态基类声明虚析构函数

时间:2014-08-24 16:34:32      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:style   color   使用   strong   size   sp   c++   on   c   

前言

  在使用 C++ 实现多态的时候,有一点一定要清楚:当派生类对象经由基类指针被删除,而此基类的析构函数没有被声明为虚函数的话,那么析构函数只会释放基类部分的成员而无视派生类成员。

  如果不对这一点加以防范,那么很多时候,会带来内存泄露这样灾难性的后果。

解决之道

  1. 对于要拿来实现多态的基类,其析构函数一定要声明为虚函数。

  也就是说,任何类只要带有虚函数,那么也几乎可以肯定其析构函数也要声明为虚函数。

  2. 对于不用拿来当基类的类,或者拿来当基类但是不需要实现多态的类,则不要将析构函数声明为虚函数类型。

小结

  如果有某个类你希望将它声明为抽象类,但是一时又没确定设哪个成员函数为纯虚函数,那么自然而然想到可以将其析构函数声明为纯虚函数。不过在这种情况下,这个纯虚函数必须有定义,原因不解释。

为多态基类声明虚析构函数

标签:style   color   使用   strong   size   sp   c++   on   c   

原文地址:http://www.cnblogs.com/scut-fm/p/3932856.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!