我有一個有很多小函數的類。通過小函數,我的意思是函數不會做任何處理,只是返回一個字面值。例如:在C++的頭文件中編寫函數定義
string Foo::method() const{
return "A";
}
我創建了頭文件「Foo.h」和源文件「Foo.cpp」。但由於函數非常小,我正在考慮將其放入頭文件本身。我有以下問題:
- 是否有任何性能或者如果我把在頭文件中,這些函數的定義等問題?我會有很多這樣的功能。
- 我的理解是,編譯完成後,編譯器將展開頭文件並將其放在包含它的位置。那是對的嗎?
謝謝。所有這些小功能都是虛擬的。這會對內聯有什麼影響嗎?我認爲在源文件中編寫函數體並標記爲內聯比直接在頭中編寫要好。我擔心,如果所有這些函數都在那裏定義,那麼頭文件的可讀性就會降低。 – 2009-01-17 15:20:38
如果編譯器可以找出虛函數調用的方向,它也可以內聯:b * b_ = new d;度特(B_); //如果內聯doit,它會看到b_是d。那麼它可以像在d中一樣內聯虛函數定義的代碼。虛擬使得它更加困難,但並非不可能 – 2009-01-17 15:29:40
但我同意你的看法:我常常不願意將代碼放入標題中,因爲當我更改它時,它會影響所有調用它的代碼,而且通常在標題中定義需要包括至少有一個代碼依賴的其他頭文件。 (對於簡單的吸氣者,我並不總是這樣,我把它們放在那裏)。 – 2009-01-17 15:31:33