zoukankan      html  css  js  c++  java
  • 虚析构函数

    定义一个基类的指针p,在delete p时,如果基类的析构函数是虚函数,这时只会看p所赋值的对象,如果p赋值的对象是派生类的对象,就会调用派生类的析构函数(毫无疑问,在这之前也会先调用基类的构造函数,在调用派生类的构造函数,然后调用派生类的析构函数,基类的析构函数,所谓先构造的后释放);如果p赋值的对象是基类的对象,就会调用基类的析构函数,这样就不会造成内存泄露。

    如果基类的析构函数不是虚函数,在delete p时,调用析构函数时,只会看指针的数据类型,而不会去看赋值的对象,这样就会造成内存泄露。

    int main()
    {
        Shape *p=new Circle;
        delete p;
        shape=NULL;
    }

    ---------------------
    作者:xld_hung
    来源:CSDN
    原文:https://blog.csdn.net/xld_hung/article/details/76776497
    版权声明:本文为博主原创文章,转载请附上博文链接!

    int main() { Shape *shape=new Circle; delete shape; shape=NULL; }

    新战场:https://blog.csdn.net/Stephen___Qin
  • 相关阅读:
    迷宫最短路问题
    回溯算法
    解题报告:poj1321 棋盘问题
    矩阵、分数、点、线类
    判断图像中有多少行文本(开发中)
    图形-回行扫描函数
    贝叶斯分类器
    js解析数学运算公式
    用postcss给less加上webkit前缀
    node创建文件夹
  • 原文地址:https://www.cnblogs.com/Stephen-Qin/p/10128340.html
Copyright © 2011-2022 走看看