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

effective c++学习笔记条款8-10

时间:2016-07-30 18:19:36      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:

条款7:为多态基类声明虚析构函数

 

1、一个基类指针接受一个派生类对象的地址时,对该指针delete,仅仅释放基类部分

2、给所有类都带上虚析构函数是个馊主意,会带有vptr指向一个函数指针数组,扩大不必要的对象大小,除非补偿vptr,否则没有移植性。

3、string类和STL不含有虚析构函数,然而一些用户 却将他们作为基类,运用   delete指向派生类的基类指针,导致错误【c++11添加了禁止派生性质】,他们不适合当基类。

4,手头上没有合适的纯虚函数,但你确实需要一个抽象类,把析构函数声明为纯虚函数也不错,包含虚析构的问题,但你切记要给他一个定义,因为析构派生类时会用到它。

5、虚析构的设计目的是为了通过基类接口来处理派生类对象

6、有些类是为了做基类但是不是用来支持多态的。

7、带多态性质的类或有虚函数的类要带有虚析构函数,不是为了多态的类别有虚析构函数。

 

条款8:别让异常逃离析构函数【回顾异常】

 

1、不要让虚构函数抛出异常,析构函数要捕捉任何异常,吞下或者结束程序。

2、如果客户需要对某个操作期间抛出的异常做出反应,那么clss应该提供一个普通函数(而非在析构函数中)执行该操作

3、用于资源管理的类,设置一个资源管理类以管理的对象为成员,提供管理对象的函数在新类中。

 

条款9:绝不在构造和析构函数中调用virtual函数【回顾】

 

1、总而言之不要再析构函数和构造函数中使用虚函数,因为对象所在的层次和调用的层次其实不一样。

2、用一个static函数调用形参来基类传递数据。

 

effective c++学习笔记条款8-10

标签:

原文地址:http://www.cnblogs.com/7-29/p/5721274.html

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