effective c 條款總結

2021-09-30 14:08:52 字數 1453 閱讀 2749

條款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++在幕後為你所寫、所呼叫的函式

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

條款48:重視編譯器警告

條款49:熟悉標準庫

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

《Effective C 》條款04總結

條款04 確定物件使用前已被初始化 class test test obj 其中,obj的成員變數 x,y 有時候被初始化,有時候不被初始化。讀取未初始化的值會導致一些不明確的行為,有時候可能會導致你的程式終止執行。處理方法 永遠在使用物件之前先將它初始化。1 對於內建型別,採用手工方式進行完成,如...

effective c 條款11學習總結

1.為需要動態分配記憶體的類宣告乙個拷貝建構函式和乙個賦值操作符 只要類裡有指標時,就要寫自己版本的拷貝建構函式和賦值操作符函式。在這些函式裡,你可以拷貝那些被指向的資料結構,從而使每個物件 都有自己的拷貝 或者你可以採用某種引用計數機制去跟蹤當前有多少個物件指向某個資料結構。引用計數的方法更複雜,...

effective c 條款13學習總結

條款13 初始化列表中成員列出的順序和它們在類中宣告的順序相同 如果成員按它們在初始化列表上出現的順序被初始化,那w1和w2中的資料成員被建立的順序就會不同。我們知道,對乙個物件的所有成員來說,它們的析構函式被呼叫的順序總是和它們在建構函式裡被建立的順序相反。那麼,如果允許上面的情況 即,成員按它們...