1.概念:内聯類似于宏定義,當程式執行到内聯函數時,相當于複制了一份函數代碼。犧牲代碼空間,赢得了時間
内聯說明隻是向編譯器發出一個請求,編譯器可以選擇忽略這個請求
2.關鍵字:inline
- 聲明時寫了inline,定義時可省略。建議聲明和定義都加上inline
inline int add(int a,int b)
{
return a+b;
}
3.内聯的優、缺點:
- 優點:避免了函數調用的開銷,加快了代碼的運作速度,避免頻繁調用函數對棧記憶體帶來的消耗
- 缺點:浪費代碼空間
4.使用内聯的情況
- 不宜使用内聯的情況:遞歸函數、或函數中含有循環結構(浪費時間)、或函數代碼過長(消耗記憶體)
- 可使用内聯的情況:内聯一般在類中使用(函數内進行簡單的指派、或直接傳回資料、或1~5條小語句)
- 内聯函數定義建議放在頭檔案中,但是不強制要求
總結:内聯機制用于優化規模較小,流程直接,頻繁調用的函數
5.顯式内聯、隐式内聯
- 隐式内聯:結構體或類中的函數在結構體中聲明并定義,并且如果這個函數不複雜,那麼其是隐式内聯的(編譯器自動定義)
- 顯示内聯:手動給出