Effective C++摘錄

 

1 讓自己習慣C++

條款01 :視C++爲一個語言聯邦

C,Object-Oritented C++,Template C++,STL

 

條款02:儘量以const,enum,inline替換 #define

 

條款03:儘可能使用const

許多人漠視一個事實:兩個成員函數如果只是常量性不同,可以被重載

 

條款04:確定對象被使用前已先被初始化

這個規則很容易奉行,重要的是別混淆了賦值和初始化。

 

2 構造/析構/賦值運算

條款05:瞭解C++默默編寫並調用哪些函數

 

條款06:若不想使用編譯器自動生成的函數,就該明確拒絕

將成員函數聲明爲private而且故意不實現它們

 

條款07:爲多態基類聲明virtual析構函數

 

條款08:別讓異常逃離析構函數

 

條款09:絕不在構造和析構過程中調用virtual函數

 

條款10:令operator=返回一個reference to *this

爲了實現連鎖賦值

 

條款11:在operator=中處理“自我賦值”

 

條款12:複製對象時勿忘其每一個成分

 

3 資源管理

所謂資源就是,一旦用了它,將來必須歸還給系統。如果不這樣,糟糕的事情就會發生。

條款13:以對象管理資源

 

條款14:在資源管理類中小心copying行爲

 

條款15:在資源管理類中提供對原始資源的訪問

 

條款16:成對使用new和delete時要採取相同形式

 

條款17:以獨立語句將newed對象置入智能指針

以獨立語句將newed對象存儲於(置入)智能指針內。如果不這樣做,一旦異常被拋出,有可能導致難以察覺的資源泄漏。

 

4設計與聲明

所謂軟件設計,是“令軟件做出你希望它做的事情”的步驟和做法,通常以頗爲一般性的構想開始,最終演變成十足的細節,以允許特殊接口的開發。

條款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函數

swap是個有趣的函數,原本它只是STL的一部分,而後成爲異常安全性編程的脊柱,以及用來處理自我賦值可能性的一個常見機制。

 

5實現

條款26:儘可能延後變量定義式的出現時間

 

條款27:儘量少做轉型動作

const_cast dynamic_cast static_cast reinterpret_cast

 

條款28:避免返回handles指向對象內部成分

 

條款29:爲“異常安全”而努力是值得的

不泄漏任何資源

不允許數據敗壞

基本承諾

強烈保證

不拋擲保證

 

條款30:透徹瞭解inlining的裏裏外外

 

條款31:將文件間的編譯依存關係降至最低

 

6繼承與面向對象設計

條款32:確定你的public繼承塑出is-a關係

 

條款33:避免遮掩繼承而來的名稱

 

條款34:區分接口繼承和實現繼承

 

條款35:考慮virtual函數以外的其他選擇

 

條款36:絕不重新定義繼承而來的non-virtual函數

 

條款37:絕不重新定義繼承而來的缺省參數值

 

條款38:通過複合塑模出has-a或“根據某物實現出”

 

條款39:明智而審慎地使用private繼承

 

條款40:明智而審慎地使用多重繼承

 

7模板與泛型編程

 

條款41:瞭解隱式接口和編譯期多態

 

條款42:瞭解typename的雙重意義

 

條款43:學習處理模板化基類內的名稱

 

條款44:將與參數無關的代碼抽離templates

 

條款45:運用成員函數模板接受所有兼容類型

 

條款46:需要類型轉換時請爲模板定義非成員函數

 

條款47:請使用traits classes表現類型信息

 

條款48:認識template元編程

 

8定製new和delete

條款49:瞭解new-handler的行爲

 

條款50:瞭解new和delete的合理替換時機

 

條款51:編寫new和delete時需固守常規

 

條款52:寫了placement new也要寫placement delete

 

9雜項討論

條款53:不要輕忽編譯器的警告

 

條款54:讓自己熟悉包括TR1在內的標準程序庫

 

條款55:讓自己熟悉Boost

 

 

發佈了18 篇原創文章 · 獲贊 81 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章