標籤:高效c++ 目錄
目錄
條款1:視C++為一個語言聯邦
條款2:盡量以const、enum、inline替換#define
條款3:儘可能使用const
條款4:確定對象使用前已先被初始化
條款5:瞭解C++預設編寫並調用哪些函數
條款6:若不想使用編譯器自動產生的函數,就該明確拒絕
條款7:為多態基類聲明virtual解構函式
條款8:別讓異常逃離解構函式
條款9:絕不在構造和析構過程中調用virtual函數
條款10:令operator=返回一個reference to *this
條款11:在operator=中實現“自我賦值”
條款12:複製對象時勿忘其每一部分
條款13:以對象管理資源
條款14:在資源管理類中小心coping行為
條款15:在資源管理類中提供對原始資源的訪問
條款16:成對使用new和delete時要採取相同形式
條款17:以獨立語句將newed對象置入智能指標
條款18:讓介面容易被正確使用,不容易被誤用
條款19:設計class猶如設計type
條款20:寧以pass-by-reference-to-const替換pass-by-value
條款21:必須返回對象時,別妄想返回其reference
條款22:將成員變數聲明為private
條款23:寧以non-member、non-friend替換member函數
條款24:若所有參數皆需要類型轉換,請為此採用non-member函數
條款25:考慮寫出一個不拋出異常的swap函數
條款26:儘可能延後變數定義式的出現時間
條款27:盡量少做轉型動作
條款28:避免返回handles指向對象內部成分
條款29:為“異常安全”而努力是值得的
條款30:透徹瞭解inlining的裡裡外外
條款31:將檔案間的編譯依存關係降至最低
條款32:確定你的public繼承塑模出is-a關係
條款33:避免遮掩繼承而來的名稱
條款34:區分介面繼承和實現繼承
條款35:考慮virtual函數以外的其他選擇
條款36:絕不重新定義繼承而來的non-virtual函數
條款37:絕不要重新定義繼承而來的預設參數值
條款38:通過複合塑模樹has-a 或“根據某物實現出”
條款39:明智而審慎的使用private繼承
條款40:明智而審慎的使用多重繼承
條款41:瞭解隱式介面和編譯期多態
條款42:瞭解typename的雙重意義
條款43:學習處理模板化基類內的名稱
條款44:將與參數無關的代碼抽離templates
條款45:運用成員函數模板接受所有相容類型
條款46:需要類型轉換時請為模板定義非成員函數
條款47:請使用traits class表現類型資訊
條款48:認識template元編程
條款49:瞭解new-handler的行為
條款50:瞭解new和delete的合理替換時機
條款51:編寫new和delete時需固守常規
條款52:寫了placement new也要寫placement delete
條款53:不要輕忽編譯器的警告
條款54:讓自己熟悉包括TR1在內的標準程式庫
條款55:讓自己熟悉Boost
《Effective C++》 目錄