7.2.1用malloc或者new申請記憶體之後,應該立即檢查指標值是否為
null。防止使用指標值為null的記憶體。
7.2.3動態記憶體的申請與釋放必須配對,防止記憶體洩漏。
7.2.4用free或delete釋放了記憶體之後,立即將指標設定為null,防止
產生「野指標」。
7.7野指標的成因:
(1)指標變數沒有被初始化。
(2)指標p被free或者delete之後,沒有置為null,讓人誤以為p是個
合法的指標。
7.9記憶體耗盡問題:
(1)判斷指標是否為null,如果是則馬上用return語句終止本函式。
(2)判斷指標是否為null,如果是則馬上用exit(1)終止整個程式
的執行。
(3)為new和malloc設定異常處理函式。
7.10free的用法:
如果p是null指標,那麼free對p無論操作多少次都不會出問題。如果p
不是null指標,那麼free對p連續操作兩次就會導致程式執行錯誤。
8.5一下情況不宜使用內聯:
(1)如果函式體內的**比較長,使用內聯將導致記憶體消耗代價較高。
(2)如果函式體內出現迴圈,那麼執行函式體內**的時間要比函式
呼叫的開銷大。
不要隨便地將建構函式和西溝函式的定義體放在類宣告中。
9.0c++編譯器自動產生四個預設的函式,如:
a(void);
a(const a &a);
~a(void);
a &operator=(const a &a);
9.1 類的const常量只能在初始化表裡被初始化。
9.2 基類與派生類的析構函式應該為虛繼承。
11.1
對於非內部資料型別的輸入引數,應該將「值傳遞」的方式改為「const
引用傳遞」,目的是提高效率。
對於內部資料型別的輸入引數,不要將「值傳遞」的方式改為
「const引用傳遞」。否則既達不到提高效率的目的,又降低了函式的可
理解性。
11.2函式返回值採用「引用傳遞」的場合並不多,這種方式一般只出現
在類的賦值函式中,目的是為了實現鏈式表達。
11.3const成員函式
任何不會修改資料成員的函式都應該宣告為const型別。
11.4先優化資料結構和演算法,再優化執行**。
11.5變數(指標、陣列)被建立之後應當及時把它們初始化,以防止
把未被初始化的變數當成右值使用。
讀書筆記 高質量C C程式設計指南 目錄
序 最近痛下決心要好好學習下c和c 以為即將來臨的求職做點準備,在網上搜野指標的問題時看到了 高質量c c程式設計指南 對於我這種想從事嵌入式開發的人來說,猶如收穫到一本程式設計的bible似的。此文對c和c 程式設計的風格及注意事項進行了精妙的分析,集合了thinking in c effecti...
《高質量C C程式設計指南》讀書筆記二
相比較c語言,c 增加了過載,內聯,const和 virtual 四種新機制。其中,過載和內聯既可用於全域性函式,也可用於類的成員函式。const 和virtual機制僅用於類的成員函式。函式過載 編譯器根據引數為每個過載函式產生不同的內部識別符號 不同編譯器產生的內部識別符號不同 c 呼叫c函式 ...
《高質量C C程式設計指南》讀書筆記三
每個類只有乙個析構函式和乙個賦值函式。可有多個建構函式。把物件的初始化放在建構函式中,把清除工作放在析構函式中。然後編譯器會自動進行初始化和清除工作。建構函式和析構函式沒有返回值型別。9.2建構函式的初始化列表 位於函式引數表之後,之前,類的const常量只能在初始化列表中初始化,9.3建構函式的次...