如何提高C++的編譯速度
阿新 • • 發佈:2019-01-04
用C++開發的人都知道,C++的編譯速度比較慢,為什麼比較慢,有一個原因是因為C++編譯時,會把include裡面的檔案全部都編譯進來,如果能想辦法減少include的檔案,那麼就可以提高編譯速度了。
那麼問題就來了,在一個檔案中要使用一個class,至少要讓編譯器知道有這個class啊,不include怎麼辦,其實可以使用前置申明的方法。
示例如下:
設計一個杯子的類Cup
class Cup
{
public:
Cup();
virtual ~Cup(); //為什麼是virtual大家都懂的哈
private:
class CupImpl; //前置申明
boost::shared_ptr<CupImpl> cup_implement_;
}
CupImpl的實現如下:
class CupImpl
{
public:
CupImpl();
virtual ~CupImpl(); //為什麼是virtual大家都懂的哈
public:
func();
private:
}
這樣可以避免在class Cup的前面include標頭檔案。還有兩個好處:
好處一:類的實現和介面是分離的,降低了耦合性;
好處二:提高二進位制的相容性,尤其是Cup類作為動態連結庫的藉口對外提供;
這種做法有一個高大上的名字:編譯防火牆