Effective C 的52個條款列表

2021-04-01 15:55:27 字數 1664 閱讀 2212

第一章 從c轉向c++

條款1:盡量用const和inline而不用#define

條款2:盡量用而不用

條款3:盡量用new和delete而不用malloc和free

條款4:盡量使用c++風格的注釋

第二章 記憶體管理

條款5:對應的new和delete要採用相同的形式

條款6:析構函式裡對指標成員呼叫delete

條款7:預先準備好記憶體不夠的情況

條款8: 寫operator new和operator delete時要遵循常規

條款9: 避免隱藏標準形式的new

條款10: 如果寫了operator new就要同時寫operator delete

第三章 建構函式,析構函式和賦值操作符

條款11: 為需要動態分配記憶體的類宣告乙個拷貝建構函式和乙個賦值操作符

條款12: 盡量使用初始化而不要在建構函式裡賦值

條款13: 初始化列表中成員列出的順序和它們在類中宣告的順序相同

條款14: 確定基類有虛析構函式

條款15: 讓operator=返回*this的引用

條款16: 在operator=中對所有資料成員賦值

條款17: 在operator=中檢查給自己賦值的情況

第四章 類和函式:設計與宣告

條款18: 爭取使類的介面完整並且最小

條款19: 分清成員函式,非成員函式和友元函式

條款20: 避免public介面出現資料成員

條款21: 盡可能使用const

條款22: 盡量用「傳引用」而不用「傳值」

條款23: 必須返回乙個物件時不要試圖返回乙個引用

條款24: 在函式過載和設定引數預設值間慎重選擇

條款25: 避免對指標和數字型別過載

條款26: 當心潛在的二義性

條款27: 如果不想使用隱式生成的函式就要顯式地禁止它

條款28: 劃分全域性名字空間

第五章 類和函式: 實現

條款29: 避免返回內部資料的控制代碼

條款30: 避免這樣的成員函式:其返回值是指向成員的非const指標或引用,但成員的訪問級比這個函式要低

條款31: 千萬不要返回區域性物件的引用,也不要返回函式內部用new初始化的指標的引用

條款32: 盡可能地推遲變數的定義

條款33: 明智地使用內聯

條款34: 將檔案間的編譯依賴性降至最低

第六章 繼承和物件導向設計

條款35: 使公有繼承體現 "是乙個" 的含義

條款36: 區分介面繼承和實現繼承

條款37: 決不要重新定義繼承而來的非虛函式

條款38: 決不要重新定義繼承而來的預設引數值

條款39: 避免 "向下轉換" 繼承層次

條款40: 通過分層來體現 "有乙個" 或 "用...來實現"

條款41: 區分繼承和模板

條款42: 明智地使用私有繼承

條款43: 明智地使用多繼承

條款44: 說你想說的;理解你所說的

第七章 雜項

條款45: 弄清c++在幕後為你所寫、所呼叫的函式

條款46: 寧可編譯和鏈結時出錯,也不要執行時出錯

條款47: 確保非區域性靜態物件在使用前被初始化

條款48: 重視編譯器警告

條款49: 熟悉標準庫

條款50: 提高對c++的認識

Effective C 的52個條款列表

第一章 從c轉向c 條款1 盡量用const和inline而不用 define 條款2 盡量用而不用 條款3 盡量用new和delete而不用malloc和free 條款4 盡量使用c 風格的注釋 第二章 記憶體管理 條款5 對應的new和delete要採用相同的形式 條款6 析構函式裡對指標成員呼...

Effective C 條款52 第8章

write placement delete if you write placement new placement new 和 placement delete 並非在c 常見.回憶 條款16和 條款17,當寫乙個如下所示的 new 表示式 widget pw new widget 共有兩個函式...

《Effective C 》 條款44 條款45

templates可以節省時間和避免 重複。對於類似的classes或functions,可以寫乙個class template或function template,讓編譯器來做剩餘的事。這樣做,有時候會導致 膨脹 code bloat 其二進位製碼帶著重複 或幾乎重複 的 資料,或者兩者。但這時候...