More Effective C++
继 Effective C++ 之后,Scott Meyers 于 1996 年推出这本“续集”。条款变得比较少,页数倒是多了一些,原因是这次选材比“第一集”更高阶。尤其是第 5 章。Meyers 将此章命名为技术(techniques),并明白告诉你,其中都是一些 patterns(模式),例如 virtual contructors(虚构造函数),smart pointers(智能指针),reference counting(引用计数),proxy classes(策略类),double dispatching(双重派发)……这一章的每个条款篇幅都长达 15~30 页之多,实在让人有“山重水复疑无路,柳暗花明又一村”之叹。
基础议题
条款 1:仔细区分指针和引用
条款 2:最好使用 C++ 转型操作符
条款 3:绝对不要以多态反诗处理数组
条款 4:非必要不提供默认构造函数
操作符
条款 5:对定制的“类型转换函数”保持警觉
条款 6:区分自增/自减操作符的前置和后置形式
条款 7:千万不要重载 &&,|| 和 , 操作符
条款 8:了解各种不同意义的 new 和 delete
异常
条款 9:利用析构函数避免资源泄露
条款 10:在构造函数内阻止资源泄露
条款 11:禁止异常流出析构函数之外
条款 12:了解“抛出一个异常”与“传递一个参数”或“调用一个虚函数”之间的差异
条款 13:以传引用的方式捕获异常
条款 14:明智运用异常规约
条款 15:了解异常处理的成本
效率
条款 16:谨记 80-20 法则
条款 17:考虑使用惰性求值
条款 18:分期摊还预期的计算成本
条款 19:了解临时对象的来源
条款 20:协助完成“返回值优化”
条款 21:利用重载技术避免隐式类型转换
条款 22:考虑以操作符复合形式取代其独身形式
条款 23:考虑使用其他程序库
条款 24:了解虚函数、多继承、虚基类、RTTI 的成本
技术
条款 25:将构造函数和非成员函数虚化
条款 26:限制某个类所能产生的对象数量
条款 27:要求(或禁止)对象产生于堆之中
条款 28:智能指针
条款 29:引用计数
条款 30:代理类
条款 31:让函数根据一个以上的对象类型来决定如何虚化
杂项讨论
条款 32:在未来时态下发展程序
条款 33:将非尾端类设计为抽象类
条款 34:如何在同一个程序中结合 C++ 和 C
条款 35:让自己习惯于标准 C++ 语言
More Effective C++
http://example.com/2023/08/06/more-effective-cpp/