MoreEffectiveC++
- 指针与引用的区别
- 尽量使用C++风格的类型转换
- 不要对数组使用多态
- 避免无用的缺省构造函数
- 谨慎定义类型转换函数
- 自增(increment). 自减(decrement)操作符前缀形式与后缀形式的区别
- 不要重载”&&”, “||”,或”,”
- 了解各种不同意义的 new 和 delete
- 利用 destructors 避免泄漏资源
- 在 constructors 内阻止资源泄漏
- 禁止异常流出 destructors 之外
- 了解 “抛出一个 exception ” 与 “传递一个参数” 或 “调用一个虚函数”之间的差异
- 以 by reference 方式捕捉 exceptions
- 明智运用 exception specifications
- 了解异常处理的成本
- 谨记 80-20 法则
- 考虑使用 lazy evaluation(缓式评估)
- 分期摊还预期的计算成本
- 了解临时对象的来源
- 协助完成“返回值优化(RVO)”
- 利用重载技术避免隐式类型转换
- 考虑以操作符复合形式(op=)取代其独身形式(op)
- 考虑使用其它程序库
- 了解 virtual functions. multiple inheritance. virtual base classes. runtime type identification 的成本
- 将 constructor 和 non-member functions 虚化
- 限制某个 class 所能产生的对象数量
- 要求(或禁止)对象产生于 heap 中
- Smart Pointer(智能指针)
- Reference counting(引用计数)
- Proxy classes(替身类. 代理类)
- 让函数根据一个以上的对象类型来决定如何虚化
- 在未来时态下发展程序
- 将非尾端类设计为抽象类
- 如何在同一个程序中结合 C++ 和 C
- 让自己习惯于标准 C++ 语言