第1章 基础议题
条款1:区分指针和引用
条款2:优先考虑c++风格的类型转换
条款3:决不要把多态应用于数组
条款4:避免不必要的默认构造函数
第2章 运算符
条款5:小心用户自定义的转换函数
条款6:区分自增运算符和自减运算符的前缀形式与后缀形式
条款7:不要重载“&&”、“ii”和“,”
条款8:理解new和delete在不同情形下的含义
第3章 异常
条款9:使用析构函数防止资源泄漏
条款10:防止构造函数里的资源泄漏
条款11:阻止异常传递到析构函数以外
条款12:理解抛出异常与传递参数或者调用虚函数之间的不同
. 条款13:通过引用捕获异常
条款14:审慎地使用异常规格
条款15:理解异常处理所付出的代价
第4章 效率
条款16:记住80—20准则
条款17:考虑使用延迟计算
条款18:分期摊还预期的计算开销
条款19:了解临时对象的来源
条款20:协助编译器实现返回值优化
条款21:通过函数重载避免隐式类型转换
条款22:考虑使用叩=来取代单独的op运算符
条款23:考虑使用其他等价的程序库
条款24:理解虚函数、多重继承、虚基类以及rtti所带来的开销
第5章 技巧
条款25:使构造函数和非成员函数具有虚函数的行为
条款26:限制类对象的个数
条款27:要求或者禁止对象分配在堆上
条款28:智能指针
条款29:引用计数
条款30:代理类
条款31:基于多个对象的虚函数
第6章 杂项
条款32:在将来时态下开发程序
条款33:将非尾端类设计为抽象类
条款34:理解如何在同一程序中混合使用c++和c
条款35:让自己熟悉c++语言标准
推荐读物
附录 auto_ptr的一个实现
条款1:区分指针和引用
条款2:优先考虑c++风格的类型转换
条款3:决不要把多态应用于数组
条款4:避免不必要的默认构造函数
第2章 运算符
条款5:小心用户自定义的转换函数
条款6:区分自增运算符和自减运算符的前缀形式与后缀形式
条款7:不要重载“&&”、“ii”和“,”
条款8:理解new和delete在不同情形下的含义
第3章 异常
条款9:使用析构函数防止资源泄漏
条款10:防止构造函数里的资源泄漏
条款11:阻止异常传递到析构函数以外
条款12:理解抛出异常与传递参数或者调用虚函数之间的不同
. 条款13:通过引用捕获异常
条款14:审慎地使用异常规格
条款15:理解异常处理所付出的代价
第4章 效率
条款16:记住80—20准则
条款17:考虑使用延迟计算
条款18:分期摊还预期的计算开销
条款19:了解临时对象的来源
条款20:协助编译器实现返回值优化
条款21:通过函数重载避免隐式类型转换
条款22:考虑使用叩=来取代单独的op运算符
条款23:考虑使用其他等价的程序库
条款24:理解虚函数、多重继承、虚基类以及rtti所带来的开销
第5章 技巧
条款25:使构造函数和非成员函数具有虚函数的行为
条款26:限制类对象的个数
条款27:要求或者禁止对象分配在堆上
条款28:智能指针
条款29:引用计数
条款30:代理类
条款31:基于多个对象的虚函数
第6章 杂项
条款32:在将来时态下开发程序
条款33:将非尾端类设计为抽象类
条款34:理解如何在同一程序中混合使用c++和c
条款35:让自己熟悉c++语言标准
推荐读物
附录 auto_ptr的一个实现