導讀(Introduction) 基礎議題(Basics)
- 條款1:仔細區別 pointers 和 references
- 條款2:最好使用 C++ 轉型運算子
- 條款3:絕對不要以 polymorphically(多型)方式來處理陣列
- 條款4:非必要不提供 default constructor 運算子(Operators)
- 條款5:對自定的型別轉換函式保持警覺
- 條款6:區別 increment/decrement 運算子的前序(prefix)和後序(postfix)型式
- 條款7:千萬不要多載化 &&, ||, 和 , 運算子
- 條款8:瞭解各種不同意義的 new 和 delete 異常情況(Exceptions)
- 條款9:利用 destructors 避免遺失資源
- 條款10:在 constructors 內阻止資源的遺失(resource leaks)
- 條款11:禁止異常訊息(exceptions)流出 destructors 之外
- 條款12:瞭解「丟出一個 exception」與「傳遞一個參數」或「呼叫一個虛擬函式」之間的差異
- 條款13:以 by reference 方式捕捉 exceptions
- 條款14:明智運用 exception specifications
- 條款15:瞭解異常處理(exception handling)的成本效率(Efficiency)
- 條款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 所需的成本技術(Techniques,又稱 Idioms 或 Pattern)
- 條款25:將 constructor 和 non-member functions 虛擬化
- 條款26:限制某個 class 所能產生的物件數量
- 條款27:要求(或禁止)物件產生於 heap 之中
- 條款28:Smart Pointers(精靈指標)
- 條款29:Reference counting(參用計數)
- 條款30:Proxy classes(替身類別、代理人類別)
- 條款31:讓函式根據一個以上的物件型別來決定如何虛擬化雜項討論(Miscellany)
- 條款32:在未來時態下發展程式
- 條款33:將非尾端類別(non-leaf classes)設計為抽象類別(abstract classes)
- 條款34:如何在同一個程式中結合 C++ 和 C
- 條款35:讓自己習慣使用標準的 C++ 語言