C++內聯函數作用及弊端


 

為什么要使用內聯函數?

因為函數調用時候需要創建時間、參數傳入傳遞等操作,造成了時間和空間的額外開銷。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;;
}

 內聯函數的弊端

使用內聯函數后雖然調用函數的開銷降低了,但是有利必有弊,內聯函數會導致主函數指令增多、函數體積增大等情況。

開發中要根據情況正確使用內聯函數 。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM