C++ 的inline關(guān)鍵字

首先理解內(nèi)聯(lián)函數(shù):

? C++ 內(nèi)聯(lián)函數(shù)是通常與類一起使用。如果一個函數(shù)是內(nèi)聯(lián)的,那么在編譯時,編譯器會把該函數(shù)的代碼副本放置在每個調(diào)用該函數(shù)的地方。

? 對內(nèi)聯(lián)函數(shù)進(jìn)行任何修改,都需要重新編譯函數(shù)的所有客戶端,因?yàn)榫幾g器需要重新更換一次所有的代碼,否則將會繼續(xù)使用舊的函數(shù)。

1.inline

? 如果想把一個函數(shù)定義為內(nèi)聯(lián)函數(shù),則需要在函數(shù)名前面放置關(guān)鍵字 inline,在調(diào)用函數(shù)之前需要對函數(shù)進(jìn)行定義

例子:

#include <iostream>
 
using namespace std;

inline int Max(int x, int y)
{
   return (x > y)? x : y;
}

// 程序的主函數(shù)
int main( )
{

   cout << "Max (20,10): " << Max(20,10) << endl;
   cout << "Max (0,200): " << Max(0,200) << endl;
   cout << "Max (100,1010): " << Max(100,1010) << endl;
   return 0;
}


//運(yùn)行結(jié)果
Max (20,10): 20
Max (0,200): 200
Max (100,1010): 1010

2.稍微總結(jié)

? 內(nèi)聯(lián)函數(shù)inline:引入內(nèi)聯(lián)函數(shù)的目的是為了解決程序中函數(shù)調(diào)用的效率問題,這么說吧,程序在編譯器編譯的時候,編譯器將程序中出現(xiàn)的內(nèi)聯(lián)函數(shù)的調(diào)用表達(dá)式用內(nèi)聯(lián)函數(shù)的函數(shù)體進(jìn)行替換,而對于其他的函數(shù),都是在運(yùn)行時候才被替代。這其實(shí)就是個空間代價換時間的i節(jié)省。所以內(nèi)聯(lián)函數(shù)一般都是1-5行的小函數(shù)。在使用內(nèi)聯(lián)函數(shù)時要留神:

  • 1.在內(nèi)聯(lián)函數(shù)內(nèi)不允許使用循環(huán)語句和開關(guān)語句;
  • 2.內(nèi)聯(lián)函數(shù)的定義必須出現(xiàn)在內(nèi)聯(lián)函數(shù)第一次調(diào)用之前;
  • 3.類結(jié)構(gòu)中所在的類說明內(nèi)部定義的函數(shù)是內(nèi)聯(lián)函數(shù)。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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