inline
概念
inline
在
c++
中,函數調用是會産生額外的時間開銷的,如果函數本身代碼很短,執行很快,并且該函數被反複調用。相比之下調用函數所産生的開銷就會很大,甚至超過執行代碼所産生的開銷。
為了減少函數調用的開銷,
c++
引入了
内聯函數
的機制。編譯器在處理内聯函數的調用語句時,直接将整個内聯函數代碼插入到調用語句處,進而減少函數調用産生的開銷。
inline
定義
inline
inline
關鍵字的使用比較簡單,隻需要在函數的定義頭部加上
inline
關鍵字即可,如下所示:
inline 傳回值類型 函數名(參數){
函數體
}
内聯函數的具體使用如下代碼所示:
#include<iostream>
using namespace std;
//傳回兩數中的最大值
inline int max(int a, int b) {
return a > b ? a : b;
}
int main() {
int a = max(2, 3);
return 0;
}
如上代碼所示,定義一個内聯函數
max
,該函數傳回兩個數中的最大值,隻需要在函數定義時加入
inline
關鍵字即可,在對
max
函數進行調用時,編譯器直接将
max
的函數代碼嵌入到調用的地方,以此來節省函數調用産生的額外開銷。
inline
函數注意事項
inline
通過上面的例子,我們了解了
inline
關鍵字的基本使用方法,内聯函數雖然節省了函數調用産生的開銷,但并不是所有的地方都能使用内聯函數定義。
當函數代碼過長時,使用内聯函數會使得程式變得臃腫。此時就不應該使用内聯函數。
另外,當函數中包含循環控制語句時,也不應該使用内聯函數。