码迷,mamicode.com
首页 > 编程语言 > 详细

C++基类一定要写虚函数!!!

时间:2014-07-18 12:03:57      阅读:261      评论:0      收藏:0      [点我收藏+]

标签:des   re   c   c++   管理   程序   

这是个提醒,算是吧!

如果详细原理过程,可能会有一个大篇幅。但这里不想多加赘述,只说说它的破坏力!

最近写了个图像处理框架,要做个基类来handle众多子类,写之前一直申称:要注意内存管理,写好析构函数。

谁知最后还是偏偏忘记了将基类析构函数virtual化,结果在操控基类释放内存的一段程序中,发现基类释放了,但attach到他上面的子类对象keep住没能free。

结果程序在集群上跑了几天,终于挂彩了。。。查了半天,终于发现base class的析构函数忘了加virtual,导致自己析构ok,但是指针却无法找到子类析构函数,跑去xx了。

泪奔啊!

血的教训,各位珍重,这低级错误愿君勿犯!

erro wrotten:

class baseA{

~baseA();

//or you use default destructor

}

class B:baseA{

B();

~B();

}

 

//use 

baseA *p= xxxxxxx;

//delete

delete p;//Here it can call ~baseA(),but B‘s destructor func cant find and call.

//B is still in your mem.

C++基类一定要写虚函数!!!,布布扣,bubuko.com

C++基类一定要写虚函数!!!

标签:des   re   c   c++   管理   程序   

原文地址:http://www.cnblogs.com/erickingxu/p/3853094.html

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