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

虚析构函数

时间:2018-12-17 02:27:03      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:释放   bsp   数据   ola   ant   ons   line   作者   important   

定义一个基类的指针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; }

虚析构函数

标签:释放   bsp   数据   ola   ant   ons   line   作者   important   

原文地址:https://www.cnblogs.com/Stephen-Qin/p/10128340.html

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