c++內(nèi)聯(lián)函數(shù)inline

inline概念

c++中,函數(shù)調(diào)用是會(huì)產(chǎn)生額外的時(shí)間開銷的,如果函數(shù)本身代碼很短,執(zhí)行很快,并且該函數(shù)被反復(fù)調(diào)用。相比之下調(diào)用函數(shù)所產(chǎn)生的開銷就會(huì)很大,甚至超過執(zhí)行代碼所產(chǎn)生的開銷。

為了減少函數(shù)調(diào)用的開銷,c++引入了內(nèi)聯(lián)函數(shù)的機(jī)制。編譯器在處理內(nèi)聯(lián)函數(shù)的調(diào)用語句時(shí),直接將整個(gè)內(nèi)聯(lián)函數(shù)代碼插入到調(diào)用語句處,從而減少函數(shù)調(diào)用產(chǎn)生的開銷。

inline定義

inline關(guān)鍵字的使用比較簡單,只需要在函數(shù)的定義頭部加上inline關(guān)鍵字即可,如下所示:

inline 返回值類型 函數(shù)名(參數(shù)){
    函數(shù)體
}

內(nèi)聯(lián)函數(shù)的具體使用如下代碼所示:

#include<iostream>
using namespace std;
//返回兩數(shù)中的最大值
inline int max(int a, int b) {
    return a > b ? a : b;
}

int main() {
    int a = max(2, 3);
    return 0;
}

如上代碼所示,定義一個(gè)內(nèi)聯(lián)函數(shù)max,該函數(shù)返回兩個(gè)數(shù)中的最大值,只需要在函數(shù)定義時(shí)加入inline關(guān)鍵字即可,在對(duì)max函數(shù)進(jìn)行調(diào)用時(shí),編譯器直接將max的函數(shù)代碼嵌入到調(diào)用的地方,以此來節(jié)省函數(shù)調(diào)用產(chǎn)生的額外開銷。

inline函數(shù)注意事項(xiàng)

通過上面的例子,我們了解了inline關(guān)鍵字的基本使用方法,內(nèi)聯(lián)函數(shù)雖然節(jié)省了函數(shù)調(diào)用產(chǎn)生的開銷,但并不是所有的地方都能使用內(nèi)聯(lián)函數(shù)定義。

當(dāng)函數(shù)代碼過長時(shí),使用內(nèi)聯(lián)函數(shù)會(huì)使得程序變得臃腫。此時(shí)就不應(yīng)該使用內(nèi)聯(lián)函數(shù)。

另外,當(dāng)函數(shù)中包含循環(huán)控制語句時(shí),也不應(yīng)該使用內(nèi)聯(lián)函數(shù)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容