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

Effective C++条款7

时间:2015-06-22 11:11:57      阅读:123      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!