基礎議題
條款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++語言