天天看點

C++:03---内聯函數(inline)

 1.概念:内聯類似于宏定義,當程式執行到内聯函數時,相當于複制了一份函數代碼。犧牲代碼空間,赢得了時間

内聯說明隻是向編譯器發出一個請求,編譯器可以選擇忽略這個請求

2.關鍵字:inline

  • 聲明時寫了inline,定義時可省略。建議聲明和定義都加上inline
inline int add(int a,int b)
{
    return a+b;
}
           

3.内聯的優、缺點:

  • 優點:避免了函數調用的開銷,加快了代碼的運作速度,避免頻繁調用函數對棧記憶體帶來的消耗
  • 缺點:浪費代碼空間

4.使用内聯的情況

  • 不宜使用内聯的情況:遞歸函數、或函數中含有循環結構(浪費時間)、或函數代碼過長(消耗記憶體)
  • 可使用内聯的情況:内聯一般在類中使用(函數内進行簡單的指派、或直接傳回資料、或1~5條小語句) 
  • 内聯函數定義建議放在頭檔案中,但是不強制要求

總結:内聯機制用于優化規模較小,流程直接,頻繁調用的函數 

5.顯式内聯、隐式内聯

  • 隐式内聯:結構體或類中的函數在結構體中聲明并定義,并且如果這個函數不複雜,那麼其是隐式内聯的(編譯器自動定義)
  • 顯示内聯:手動給出

繼續閱讀