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

Effective C++ .07 virtual析构函数的提供

时间:2014-12-21 17:57:41      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:

主要讲了,

1. virtual析构函数的作用与调用顺序

2. 使用时机,并不是使用了继承就要把基类的析构函数变为虚函数(virtual),只有当用于多态目的时才进行一个virtual析构函数的定义。

3. 不要继承那些没有将析构函数定义为virtual的类来实现多态行为 

 

对于1:

有些类继承可能只是一个组合的作用,这样加入virtual析构函数就会使得类实例的空间占用增加(一个vptr)

 

对于2:

如果继承确实是为了实现多态效果,那么最好定义一个virtual析构函数(自己认为,当不涉及到资源释放,其实也没必要进行定义,但是防范未然,因为已经使用了多态,那么vptr的存在就必不可少了,加入一个virtual析构函数并不会再引起类实例数据存放上的巨大变动)

 

对于3:

特别注意STL中的许多容器都要去继承他们来实现多态,可能导致自己扩展的部分资源未被释放(因为仅仅会调用基类的析构函数,而它恰恰不是virtual函数)

Effective C++ .07 virtual析构函数的提供

标签:

原文地址:http://www.cnblogs.com/lailailai/p/4176712.html

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