基础议题
条款1:仔细区别pointers和references
条款2:最好使用C++转型操作符
条款3:绝对不要以多态(polymorphically)方式处理数组
条款4:非必要不提供default constructor
操作符
条款5:对定制的【型别转换函数】操持警觉
条款6:区别increment/decrement操作符的前置和后置形式
条款7:千万不要重载&&,||和,操作符
条款8:了解各种不同意义的new和delete
异常
条款9:利用destructors避免泄漏资源
条款10:在constructors内阻止资源泄漏
条款11:禁止异常流出destructors之外
条款12:了解【掷出一个exception】与【传递一个参数】或【调用一个虚函数】之间的差异
条款13:以by reference方式捕捉exceptions
条款14:明智运用 exception specifications
条款15:了解异常处理的成本
效率
条款16:谨记80-20法则
条款17:考虑使用lazy evaluation(缓式评估)
条款18:分期摊还预期的计算成本
条款19:了解临时对象的来源
条款20:协助完成【返回值优化(RVO)】
条款21:利用多载技术(overload)避免隐式型别转换
条款22:考虑以操作符复合形式(op=)取代其独身形式(op)
条款23:考虑使用其它程序库
条款24:了解virtual functions、multiple inheritance、virtual base classes、runtime type identification的成本
技术
条款25:将constructor和non-member functions虚化
条款26:限制某个class所能产生的对象数量
条款27:要求(或禁止)对象产生于heap之中
条款28:Smart Pointers(智能指针)
条款29:Reference counting(引用计数)
条款30:Proxy classes(替身类、代理类)
条款31:让函数根据一个以上的对象型别来决定如何虚化
杂项讨论
条款32:在未来时态下发展程序
条款33:将非尾端类设计为抽象类
条款34:如何在同一个程序中结合C++和C
条款35:让自己习惯于标准C++语言