2016-12-05 71 views
0

我在互聯網上搜索了很多C++內聯,但似乎每個人都喜歡不同的實現方式。C++ Inlining - 什麼是「正確」的方式

我的問題如下所示:

// header-file 
class Test { 
    int i; 
    public: 
     int getI(); 
}; 
// source-file 
int Test::getI() { return i; } 

由於此功能getI()被調用數千次,我認爲它是有用的「內聯」這一功能。這樣做的最佳方式是什麼:

// 1) define the function within the class-definition 
class Test { 
    int i; 
    public: 
     int getI() { return i; } 
}; 

// 2) define the function within the header-file 
inline int Test::getI() { return i; } // directly located under class-definition 

// 3) let the fct-definition stay in the source file and write "inline" before it (somehow this does not compile) 

你能給我一個提示哪種方式是最好的或最高性能的實現?感謝您的幫助:)

+3

1和2在代碼生成方面應該是相同的,只是風格或個人意見的問題,所以不可能給出明確的答案。 –

回答

0

1和2是相同的。它完全依賴於編譯器以內聯的方式實際調用它。如果你在類中定義了一個複雜的「內聯」函數,內聯編寫並不保證它是內聯的。簡而言之,它是編譯器依賴的。

相關問題