[英]C++ Inline Function Prototypes
我遇到了一個頭文件,該頭文件包含內聯和const的各種函數原型聲明:
inline bool Foo1() const;
inline bool Foo2() const;
inline bool Foo3() const;
...
我知道inline關鍵字允許編譯器在調用時(可能)擴展該函數,但是為什么不包括該函數的主體呢?
如果定義包含在頭文件中,這對我來說更有意義:
inline bool Foo1() const { return m_Foo1; };
inline bool Foo2() const { return m_Foo2; };
inline bool Foo3() const { return m_Foo3; };
...
在原型上使用內聯有什么意義?
可能這只是一個錯誤,但程序員最有可能希望使函數內聯,但又不想通過這些函數的實現使文件的那部分雜亂無章。 編寫“僅標頭”代碼時,這是一種相當常見的模式。 您有一個沒有(或很少)實現的普通頭文件,並且包含另一個文件,但其行為類似於一個實現文件,並且包含所有實現。
它只是在允許緊湊地顯示類接口。
函數定義稍后存在於編譯單元中(在調用之前, 如果已調用)
來自多布博士 :
函數定義或函數原型都可以內聯聲明。 如果將函數原型聲明為內聯,則在調用該函數時,該函數的單獨定義必須出現在模塊中的其他位置
有很多原因。
唯一的限制是,函數定義必須包含在使用內聯函數的每個編譯單元中。 否則,內聯函數在聲明和定義方式上與普通函數完全相同。
因為這些功能可能位於目標文件中,並且開發人員不希望任何人看到源代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.