Effective C++
Effective C++中文版(第三版) 学习笔记
part1 习惯C++
- item1 视C++为一个语言集合
- item2 用const,enum,inline代替#define
- item3 多用const
- item4 确保对象在使用前已被初始化
part2 构造/析构/赋值运算
- item5 了解C++类中自动生成和调用的函数
- item6 若不想使用编译器自动生成的函数,要显式拒绝
- item7 为多态基类声明virtual析构函数
- item8 不要让析构函数抛出异常
- item9 不要在构造和析构函数中调用virtual函数
- item10 自定义赋值操作符(operator=) 要返回*this的引用
- item11 注意operator= 的“自我赋值”
- item12 对象进行复制时需要完整拷贝
part3 资源管理
- item13 使用对象来管理资源
- item14 注意资源管理类中的拷贝行为
- item15 在资源管理类中提供对原始资源的访问git
- item16 使用new/delete形式要对应
- item17 用单独的语句来创建智能指针
part4 设计与声明
- item18 让接口不容易被误用
- item19 把类当作类型来设计
- item20 用常量引用传递代替值传递
- item21 不要在需要返回对象时返回引用
- item22 类的数据成员声明为private
- item23 用非成员且非友元函数来替换成员函数
- item24 如果参数要进行类型转换,该函数不能作为成员函数
- item25 考虑写一个高效的swap函数
part5 实现
- item26 尽可能推迟变量定义
- item27 减少类型转换的使用
- item28 避免返回指向对象内部成员的句柄
- item29 保证代码的异常安全性
- item30 透彻了解inline函数
- item31 最小化文件之间的编译依赖关系
part6
- item32 让public继承塑造出is-a关系
- item33 避免继承中发生的名称覆盖
- item34 区分接口继承和实现继承
- item35 考虑virtual函数的替代方法
- item36 不要重写继承来的非虚函数
- item37 不要重定义通过继承得到的默认参数值
- item38 通过组合塑造has-a或use-a关系
- item39 慎用private继承
- item40 慎用多继承
part7
part8
part9
参考文献 & 资源链接