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/
作者
QiDianMaker
发布于
2023年8月5日
更新于
2023年8月20日
许可协议