這是什麼實現內聯函數對.cpp文件
//Foo.h
struct Foo {
void bar() {
//lots of complex statements
}
};
這
//Foo.h
struct Foo {
void bar();
};
//Foo.cpp
inline void Foo::bar() {
//lots of complex statements
}
之間的實際差異是否有任何在最後的這兩種方法編制的任何差異程序還是保證是相同的?
請根據哪些人應該選擇哪些方面以及爲什麼使用良好的編碼實踐/經驗做出一些評論。注意「很多複雜的陳述」。任何具體的情況下,這些東西應該實際上在頭文件中? AFAIK,大部分的升級版本庫都只有標題 - 他們爲什麼選擇這樣做?
「在最終編譯的程序中是否存在任何差異」 - 差異**存在**,標題中的函數可以在每個翻譯單元中內聯。 – Csq 2013-02-10 13:18:17
@Csq:好的,我剛剛注意到第二種情況下的定義是在cpp文件中..ahh無賴。你是對的。 – 2013-02-10 13:21:06
@Csq和Alok保存:所以問題是頭中函數定義的結束程序會比另一個更大,因爲函數代碼將在每個翻譯單元中,而編譯器很可能會忽略內聯請求如果函數定義在.cpp文件中?這是你想要創造的點嗎? – user2015453 2013-02-10 13:57:30