條款53:不要輕忽編譯器的警告 努力在編譯器最高警告級別下爭取“無任何警告”。 不要過度依賴編譯器的報警能力,不同的編譯器對待同一件事情的態(tài)度不...
條款49:了解new-handler的行為 當(dāng)operator new或者operator new[]分配內(nèi)存時,如果不能獲得指定大小的內(nèi)存時,...
背景: 實際項目中,我們往往將一個系統(tǒng)分解成一個個功能模塊,這些功能模塊以動態(tài)庫加載的方式由主程序加載使用。 需求1: 主程序定義好功能類的接口...
條款41:了解隱式接口和編譯器多態(tài) 對于class而言,接口是顯式的,動態(tài)通過virtual函數(shù)實現(xiàn),發(fā)生于運行期間。 對于template而言...
條款32:確定public繼承塑模出is-a關(guān)系 is-a和has-a是C++類的兩個重要關(guān)系描述,如果類D基于public方式繼承于類B,則D...
背景:我們在程序中往往需要對一個類實例的合法性進行檢查,大部分的程序員都會想到在類的方法中提供一個方法檢查合法性(比如提供一個IsValid函數(shù)...
條款26:盡可能延后變量定義式的出現(xiàn)時間 考察下面的示例代碼: 很顯然,這里的myStr提前定義了,并且會帶來額外的默認(rèn)構(gòu)造函數(shù)的開銷,雖然在這...
條款18:讓接口容易被正確使用,不易被誤用 建立新的類型作為函數(shù)可以防止用戶輸入錯誤的數(shù)據(jù),考察下面的類構(gòu)造函數(shù): 當(dāng)用戶調(diào)用構(gòu)造函數(shù)時,很容易...
C++程序開發(fā)中我們常用std::sort函數(shù)對一個vector數(shù)組進行排序,但是某些情況下會產(chǎn)生crash的情況,比如下面的代碼: 究其原因是...