Posted on 2007-08-13 10:24
寶杉 閱讀(213)
評論(0) 編輯 收藏 引用 所屬分類:
C++
內聯函數:既增加安全性,又可以調用類的數據成員。
故C++中,用內聯取代所有宏,但在Debug版本中,assert是例外。
assert不產生任何副作用,調用函數會引起內存、代碼的變動,所以assert是宏。
內聯格式:
void Foo(int x, int y);
inline void Foo(int x, int y) // inline與函數定義體放在一起
{
…
}
用于實現的關鍵字,而非用于聲明的關鍵字。
在類中的規范格式:
class A
{
public:
void Foo(int x, int y);
}
// 定義文件
inline void A::Foo(int x, int y)
{
…
}
什么情況不適合使用內聯?
1 內聯函數代碼較長,導致內存消耗較高。
2 內聯函數包括循環,執行內聯函數代碼比調用函數的開銷大。
F:為什么構造和解析函數不使用內聯?
Q:因為析構函數可能“隱藏”一些行為,例如執行基類或成員對象的析構過程。
有時候編譯器會自動取消一些不值得的內聯,所以在聲明時不寫inline是合理的。