C++儘量用前置聲明替代頭文件包含

C++編譯是一件非常費時的事情,爲了儘量的減少編譯時間,必須更好的包含頭文件。

下面有幾條很重要的教條,可以參考。

(1) 在頭文件中能用類前置聲明代替頭文件包含的就用前置聲明。因爲使用類前置聲明,當引用的類發生改變時,當前文件不需要重新編譯。

       (a)必須要包含頭文件的情況

                (*) A繼承C,A類的頭文件中必須要包含C的頭文件;

                (*)A中包含C類的成員變量,A類的頭文件中必須包含C的頭文件;

                (*)A中的inline函數中引用到了C類的成員,A類的頭文件必須包含C的頭文件;

       (b)可以用類的前置聲明代替頭文件的情況

                (*)A中包含C類的指針成員或引用成員;

                (*)A中聲明的函數的參數或返回值是C的變量(C類型,C指針類型,C引用類型);

(2)對於類需要的頭文件,儘量在源文件中包含,而在頭文件中使用前置聲明。在源文件中,只引用需要的頭文件,不需要的頭文件不引用。

(3)在源文件中包含頭文件的順序遵循如下原則:源文件對應的頭文件(類聲明)、C標準庫、C++標準庫、其它庫的頭文件、你自己工程的頭文件。

(4)VS採用了一種預編譯頭文件機制,對於變動不大的聲明,應該放到預編譯頭文件中。

爲了儘量少的在頭文件中包含其他頭文件,一個類中應該儘量定義其他類的指針或引用數據成員,但是引用數據程序必須在構造函數中賦值,所以最終應該儘量在類中聲明其他類的指針數據成員。

使用指針之前是否需要進行空值判斷:

在函數中,對應指針參數,如果不希望參數爲空時,需要使用arrest來檢查參數是否爲空。此語句只在Debug版本有效,在正式發佈後無效,不影響效率。

在調用帶有指針參數的函數時,最好在調用之前檢查一下指針是否爲空。即遵循誰調用,誰檢查的原則。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章