1.内聯函數
在C++中我們通常定義以下函數來求兩個整數的最大值:
int max(int a, int b)
{
return a > b ? a : b;
}
為這麼一個小的操作定義一個函數的好處有:
① 閱讀和了解函數 max 的調用,要比讀一條等價的條件表達式并解釋它的含義要容易得多
② 如果需要做任何修改,修改函數要比找出并修改每一處等價表達式容易得多
③ 使用函數可以確定統一的行為,每個測試都保證以相同的方式實作
④ 函數可以重用,不必為其他應用程式重寫代碼
雖然有這麼多好處,但是寫成函數有一個潛在的缺點:調用函數比求解等價表達式要慢得多。在大多數的機器上,調用函數都要做很多工作:調用前要先儲存寄存器,并在傳回時恢複,複制實參,程式還必須轉向一個新位置執行
C++中支援内聯函數,其目的是為了提高函數的執行效率,用關鍵字 inline 放在函數定義(注意是定義而非聲明,下文繼續講到)的前面即可将函數指定為内聯函數,内聯函數通常就是将它在程式中的每個調用點上“内聯地”展開,假設我們将 max 定義為内聯函數:
inline int max(int a, int b)
{
return a > b ? a : b;
}
則調用:cout << max(a, b) << endl;
在編譯時展開為:cout << (a > b ? a : b) << endl; 進而消除了把 max寫成函數的額外執行開銷。
Google C++編碼規範中則規定得更加明确和詳細:
内聯函數:
Tip: 隻有當函數隻有 10 行甚至更少時才将其定義為内聯函數.
來自 <https://blog.csdn.net/BjarneCpp/article/details/76044493#commentBox>