首页 > 编程语言 > 详细

Effective C++条款7

时间:2015-06-22 11:11:04      阅读:218      评论:0      收藏:0      [点我收藏+]

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

本节重点大家只要明白为什么要声明析构函数为virtual函数,即声明virtual析构函数的意义。

我们知道,析构函数的作用就是实现多态polymorphic。那么如果我们动态创建一个derived派生类,由基类指针接受该派生类地址。那么我们如何释放这个派生类的内存?
如下代码:

class A
{
//...........
};

class B:public A
{
//.................
};

A* a=new B;
delete a;

大家认为以上释放有没有问题?
其实可能有问题也可能没问题,当基类的析构函数是virtual类型的就没问题,当基类的析构函数不是virtual则有问题。

试想一下,当基类的析构函数不是virtual,那么delete a调用的函数是基类的析构函数,它不会释放派生类的部分,造成内存的泄露。

当基类的析构函数是virtual,那么delete a调用的函数是派生类的析构函数。没问题。

Effective C++条款7

原文:http://blog.csdn.net/u011058765/article/details/46591449

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!