為什么要使用內聯函數?
因為函數調用時候需要創建時間、參數傳入傳遞等操作,造成了時間和空間的額外開銷。C++追求效率所以引入了內聯的概念。
通過編譯器預處理,在調用內聯函數的地方將內聯函數內的語句Copy到調用函數的地方,從而提高了效率,減少了一些不必要的開銷。
內聯函數定義?
使用關鍵字:inline 函數定義形式:inline [返回類型] [函數名]( 參數表 ){[函數體]}
例子:
當調用max函數本身所產生的開銷可能比函數內語句執行開銷大,所以我們采用內聯函數,減少調用開銷。
#include<iostream> using namespace std; inline int Max(int a,int b){ //定義內聯函數 if(a>b) return a; else return b; } int main(){ int a = 3; int b = 5; cout << "Max:" << Max(a,b) << endl; //內聯函數的定義 }
當調用了這個Max函數時,經過編譯器預處理后真正執行的程序可能是下面這個樣子
#include<iostream> using namespace std; int main(){ int a = 3; int b = 5; int temp; if(a>b) temp = a; else temp = b; cout << "MAX:" << temp << endl;; }
內聯函數的弊端
使用內聯函數后雖然調用函數的開銷降低了,但是有利必有弊,內聯函數會導致主函數指令增多、函數體積增大等情況。
開發中要根據情況正確使用內聯函數 。