More Effective C++学习 一、基础议题Item M1:指针与引用的区别Item M2:尽量使用C++风格的类型转换Item M3:不要对数组使用多态Item M4:避免无用的缺省构造函数 二、运算符Item M5:谨慎定义类型转换函数Item M6:自增、自减操作符前缀形式与后缀形式的区别Item M7:不要重载"&&","||", ","Item M8:理解各种不同含义的new和delete 三、异常Item M9:使用析构函数防止资源泄露Item M10:在构造函数中防止资源泄露Item M11:禁止异常信息(exceptions)传递到析构函数外Item M12:理解“抛出一个异常”与“传递一个参数”或“调用一个虚函数”间的差异Item M13:通过引用(reference)捕获异常Item M14:谨慎使用异常规格(Exception specifications)Item M15:了解异常处理的系统开销 四、效率Item M16:牢记80-20准则Item M17:考虑使用lazy evaluation(懒惰计算法)Item M18:分期摊还期望的计算Item M19:理解临时对象的来源Item M20:协助完成返回值优化Item M21:通过重载避免隐式类型转换Item M22:考虑用运算符的赋值形式(op=)取代其单独形式Item M23:考虑变更程序库Item M24:理解虚拟函数、多继承、虚基类和RTTI所需的代价 五、技巧(Techniques,又称Idioms或Pattern)Item M25:将构造函数和非成员函数虚拟化Item M26:限制某个类所能产生的对象数量Item M27:要求或禁止在堆中产生对象Item M28:灵巧(smart)指针Item M29:引用计数Item M30:代理类Item M31:让函数根据一个以上的对象来决定怎么虚拟 六、杂项Item M32:在未来时态下开发程序Item M33:将非尾端类设计为抽象类Item M34:如何在同一个程序中混合使用C++和CItem M35:让自己习惯使用标准C++语言 一、基础议题 Item M1:指针与引用的区别 Item M2:尽量使用C++风格的类型转换 Item M3:不要对数组使用多态 Item M4:避免无用的缺省构造函数 二、运算符 Item M5:谨慎定义类型转换函数 Item M6:自增、自减操作符前缀形式与后缀形式的区别 Item M7:不要重载"&&","||", “,” Item M8:理解各种不同含义的new和delete 三、异常 Item M9:使用析构函数防止资源泄露 Item M10:在构造函数中防止资源泄露 Item M11:禁止异常信息(exceptions)传递到析构函数外 Item M12:理解“抛出一个异常”与“传递一个参数”或“调用一个虚函数”间的差异 Item M13:通过引用(reference)捕获异常 Item M14:谨慎使用异常规格(Exception specifications) Item M15:了解异常处理的系统开销 四、效率 Item M16:牢记80-20准则 Item M17:考虑使用lazy evaluation(懒惰计算法) Item M18:分期摊还期望的计算 Item M19:理解临时对象的来源 Item M20:协助完成返回值优化 Item M21:通过重载避免隐式类型转换 Item M22:考虑用运算符的赋值形式(op=)取代其单独形式 Item M23:考虑变更程序库 Item M24:理解虚拟函数、多继承、虚基类和RTTI所需的代价 五、技巧(Techniques,又称Idioms或Pattern) Item M25:将构造函数和非成员函数虚拟化 Item M26:限制某个类所能产生的对象数量 Item M27:要求或禁止在堆中产生对象 Item M28:灵巧(smart)指针 Item M29:引用计数 Item M30:代理类 Item M31:让函数根据一个以上的对象来决定怎么虚拟 六、杂项 Item M32:在未来时态下开发程序 Item M33:将非尾端类设计为抽象类 Item M34:如何在同一个程序中混合使用C++和C Item M35:让自己习惯使用标准C++语言