zoukankan      html  css  js  c++  java
  • 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.

  • 相关阅读:
    MySQL 练习题
    MySQL 增删查改
    HTML显示与隐藏
    360布局
    div布局
    HTML练习2
    HTML练习

    if语句的用法及其案例
    输入输出,数据类型与运算符
  • 原文地址:https://www.cnblogs.com/erickingxu/p/3853094.html
Copyright © 2011-2022 走看看