C++盡量用前置聲明替代頭檔案包含
技術标簽: 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版本有效,在正式釋出後無效,不影響效率。
在調用帶有指針參數的函數時,最好在調用之前檢查一下指針是否為空。即遵循誰調用,誰檢查的原則。
版權聲明:本文為ankang654321原創文章,遵循 CC 4.0 BY-SA 版權協定,轉載請附上原文出處連結和本聲明。
本文連結:https://blog.csdn.net/ankang654321/article/details/97640060