MoreEffectiveC++

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