溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

inline內(nèi)聯(lián)函數(shù)怎么在C++項(xiàng)目中使用

發(fā)布時(shí)間:2021-03-01 16:51:51 來源:億速云 閱讀:129 作者:Leah 欄目:開發(fā)技術(shù)

本篇文章為大家展示了 inline內(nèi)聯(lián)函數(shù)怎么在C++項(xiàng)目中使用,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

指定內(nèi)聯(lián)函數(shù)的方法很簡單,只需要在函數(shù)定義處增加 inline 關(guān)鍵字。請看下面的例子:

#include
using namespace std;
//內(nèi)聯(lián)函數(shù),交換兩個(gè)數(shù)的值
inline void swap(int *a, int *b){
int temp;
temp = *a;
*a = *b;
*b = temp;
}
int main(){
int m, n;
cin>>m>>n;
cout<<m<<", “<<n<<endl;
swap(&m, &n);
cout<<m<<”, "<<n<<endl;
return 0;
}

運(yùn)行結(jié)果:

45 99↙ 45, 99 99, 45

注意,要在函數(shù)定義處添加 inline 關(guān)鍵字,在函數(shù)聲明處添加 inline 關(guān)鍵字雖然沒有錯(cuò),但這種做法是無效的,編譯器會忽略函數(shù)聲明處的 inline 關(guān)鍵字。

當(dāng)編譯器遇到函數(shù)調(diào)用swap(&m, &n)時(shí),會用 swap() 函數(shù)的代碼替換swap(&m, &n),同時(shí)用實(shí)參代替形參。這樣,程序第 16 行就被置換成:

int temp;
temp = *(&m);
*(&m) = *(&n);
*(&n) = temp;
編譯器可能會將 (&m)、(&n) 分別優(yōu)化為 m、n。

當(dāng)函數(shù)比較復(fù)雜時(shí),函數(shù)調(diào)用的時(shí)空開銷可以忽略,大部分的 CPU 時(shí)間都會花費(fèi)在執(zhí)行函數(shù)體代碼上,所以我們一般是將非常短小的函數(shù)聲明為內(nèi)聯(lián)函數(shù)。

由于內(nèi)聯(lián)函數(shù)比較短小,我們通常的做法是省略函數(shù)原型,將整個(gè)函數(shù)定義(包括函數(shù)頭和函數(shù)體)放在本應(yīng)該提供函數(shù)原型的地方。下面的例子是一個(gè)反面教材,這樣的寫法是不被推薦的:

#include
using namespace std;
//聲明內(nèi)聯(lián)函數(shù)
void swap1(int *a, int *b); //也可以添加inline,但編譯器會忽略
int main(){
int m, n;
cin>>m>>n;
cout<<m<<", “<<n<<endl;
swap1(&m, &n);
cout<<m<<”, "<<n<<endl;
return 0;
}
//定義內(nèi)聯(lián)函數(shù)
inline void swap1(int *a, int *b){
int temp;
temp = *a;
*a = *b;
*b = temp;
}

上述內(nèi)容就是 inline內(nèi)聯(lián)函數(shù)怎么在C++項(xiàng)目中使用,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI