C++ 改善程序与设计的做法
来源:互联网 发布:linux版本 编辑:程序博客网 时间:2024/04/28 07:49
条款6
编译器会为类自动创建default构造函数、copy构造函数、copy assignment操作符。若不想要这些功能,以免被其他类调用,可以将相应的类函数声明为private并不予实现。也可以单独做一个Uncopyable类,此类设置某些函数为private类型,作为基类使用。
条款7
带多态性质的基类应该声明一个虚析构函数。如果一个类带有任何虚函数,它就应该拥有一个虚析构函数。
类的设计目的如果不是为了作为具有多台性质的基类,那么这个类最好不要声明虚析构函数,否则会带来不必要的开销。
条款8
析构函数绝对不要抛出异常,如果一个被析构函数调用的函数可能抛出异常,析构函数应该捕获任何异常,然后吞下他们或结束程序。
如果客户需要对某个操作函数运行期间跑车的异常做出反应,那么累应该提供一个在析构函数之外的函数执行该操作。
条款9
在构造函数和析构函数期间不要调用virtual函数,因为这类迪欧用从不下降至派类。
条款10
为了赋值的传递性存在,令operator =返回一个指向自身的指针即*this。
条款11
为了避免自我赋值出现异常,可以采用两种方法。一:证同测试,如果等号左右相同就不执行赋值。二:copy and swap,即做一个副本然后用swap做交换。
条款12
coping函数应该确保赋值对象内的所有成员变量和所有base class的成分。因此,在字定义的cipying 函数中不仅要赋值自身的成员,还要主动调用父类的copying函数。
条款13
为了方式资源泄露,请使用RAII对象,他们在构造函数中获得资源并在析构函数中释放资源。
两个被常用的RAII类分别是tr1::shared_ptr和auto_ptr。请注意两者的区别。后者不允许有两个对象拥有统一资源。
注:
tr1::shared_ptr采用“引用计数智能指针”-RCSP(Reference-counting Smart Pointer)
RAII(Resource Acquisition Is Initialization)即,“资源取得时机便是初始化时机”。
在动态分配而得到的Array上使用auto_ptr或tr1::shared_ptr是不行的,因为两者在其析构函数内做的事delete而不是delete[]动作。
- C++ 改善程序与设计的做法
- 改善程序与设计的具体做法(C++)
- Effective C++:改善程序与设计的55个具体做法:第3版 评注者序
- 中文版《Effective C++:改善程序与设计的55个具体做法
- Effective C++改善程序与设计的55个具体做法
- Effective C++(改善编程的55种做法)第一节
- 架构,改善程序复用性的设计
- 《Effective C++ 改善程序与设计的55个具体做法》——第一章笔记
- 《Effective C++ 改善程序与设计的55个具体做法》——第二章笔记
- 《Effective C++ 改善程序与设计的55个具体做法》——第三章笔记
- 《Effective C++ 改善程序与设计的55个具体做法》——第四章笔记
- 《Effective C++ 改善程序与设计的55个具体做法》——第五章笔记
- 《Effective C++ 改善程序与设计的55个具体做法》——第六章笔记
- Effective C++ 改善程序与设计的55个具体做法 读书笔记
- Effective C++ 改善程序与设计的55个具体做法 二周目笔记01
- Effective C++ 改善程序与设计的55个具体做法 二周目笔记02
- Effective C++ 改善程序与设计的55个具体做法 二周目笔记03
- <Effective C++改善程序与设计的55个具体做法>2 构造/析构/赋值运算
- u-boot Makefile -- make xxx_config
- 应该知道的几个Linux技巧
- 关于引用形参的解释
- itpp
- 点击显示指定元素,隐藏其他同辈元素
- C++ 改善程序与设计的做法
- 深入学习android之AlarmManager
- Delta3D 消息创建、注册、转发流程
- GPS坐标转换为十进制格式
- 分析机房收费系统——导图
- 图论中的常见算法分析比较和模板
- 匈牙利命名法、骆驼命名法与帕斯卡命名法大全
- secureCRT下vim是下划线,不高亮问题
- django-oscar