EffectiveCpp
Effective C++
1. 视 C++ 为一个语言联邦
8. 析构函数吐出异常就是危险
9. 绝不在构造函数和析构函数过程中调用virtual函数
virtual函数10. 令赋值运算符返回一个 reference to *this
reference to *this11. copy and swap
12. 不要尝试以copying构造函数实现另外一个copying assignment运算符,或是反过来。应将共同机能放进第三个函数中
copying构造函数实现另外一个copying assignment运算符,或是反过来。应将共同机能放进第三个函数中13. 以对象管理资源。
14. 资源管理类中小心copying行为
copying行为15. 资源管理类并不是为了封装而存在,而是为了确保资源会被释放
16. 不要对数组形式做typedef动作。不然delete的时候会让自己混乱
typedef动作。不然delete的时候会让自己混乱17. 以独立语句将newed对象直入智能指针
19. 设计class犹如设计type
22. 所有反对public成员变量的论点同样适用于protected成员变量。所以封装形式只有两种,private与非private
23. namespace可以跨越多个源码文件
24. 若所有参数皆需类型转换,请为此采用non-member函数
25. c++允许对 class template 偏特化;不允许对 function template 偏特化,应给它添加一个重载版本。
27. 尽量少做转型动作
28. 返回一个 handle 代表对象内部成分总是危险的。
31. 将文件间的编译依存关系降至最低
32. 确定你的 public 继承塑模出 is-a 关系
34. 区分接口继承和实现继承
35. 考虑 virtual 函数以外的其它选择
37. 绝不重新定义继承而来的缺省参数值
39. 私有继承只继承实现
40. 明智而审慎地使用多重继承
41. 对classes而言接口是显示的,以函数签名(参数类型和个数)为中心。多态则是通过virtual函数发生与运行期。
42. 嵌套从属类型名称:依赖与某个模板参数
43. “当base classes从template中被具现化时”,它假设它对那些base classes的内容毫无所悉。
44. 将与参数无关的代码抽离templates
46. 需要类型转换时请为模板定义非成员函数
47. 请使用 traits classes 表现类型信息
48. 认识 template 元编程
51. 编写 new 和 delete 时需固守成规
Effective STL
18. 避免使用vector<bool>
vector<bool>19. 了解相等和等价的差别
20.
Last updated