如果您啓用了在你的編譯器全面優化和上課的設置是這樣的:C++:函數包裝器是否可以使用內聯?
class A
{
void Do_A_Stuff();
};
class B
{
A a;
void Do_B_Stuff() { a.Do_A_Stuff(); }
};
class C
{
B b;
void Do_C_Stuff() { b.Do_B_Stuff(); }
};
class D
{
C c;
void Do_D_Stuff() { c.Do_C_Stuff(); }
};
是否有過在那裏打電話Do_D_Stuff()
會比直接調用Do_A_Stuff()
慢的情況?另外,這是否需要每個包裝器'鏈'上的inline
關鍵字,或者,因爲這只是一個建議,編譯器是否可以決定優化這個關鍵字?
我意識到有很多關於內聯可用的信息,但是我找不到任何有關將多個封裝鏈接在一起的具體信息。
是的,這些功能應該是「公開」的,我只是爲了簡潔起見。 :) – Jonathan
*「或者如果函數的定義對編譯器不可見。」* - 這是否適用於[鏈接時間代碼生成](http://msdn.microsoft.com/zh-cn/library/xbf3tbeh (v = vs80).aspx)在MSVC(或其他編譯器中的等效)?我一直對此很好奇。 – JBentley
@JBentley:跨模塊內聯也是可能的,是的。還有[您可以檢查的相關問答](http://stackoverflow.com/questions/5987020/can-the-linker-inline-functions)。謝謝你的評論 –