官术网_书友最值得收藏!

2.8 內(nèi)聯(lián)函數(shù)

在函數(shù)聲明或定義時(shí),將inline關(guān)鍵字加在返回類型前面的函數(shù)就是內(nèi)聯(lián)函數(shù)。

例2-17】 求兩個(gè)數(shù)最大值的函數(shù)inline( )。

//Eg2-17.cpp
#include<iostream.h>
inline int max(int a,int b){
   return a>b?a:b;
}
void main(){
   int x1=max(3,4);
   int x2=max(7,2);
   int x4=max(x1,x2);
}

內(nèi)聯(lián)函數(shù)的聲明、定義和調(diào)用方法與普通函數(shù)相同,但C++對它們的處理方式不一樣。在編譯時(shí),C++將用內(nèi)聯(lián)函數(shù)的代碼替換對它的每次調(diào)用。上面的main()函數(shù)多次調(diào)用了內(nèi)聯(lián)函數(shù)max(),C++在編譯此程序時(shí)會(huì)將main()函數(shù)中的函數(shù)調(diào)用替換成如下形式:

void main(){
   int x1=3>4?3:4;
   int x2=7>2?7:2;
   int x4=x1>x2?x1:x2;
}

函數(shù)inline()不需要建立函數(shù)調(diào)用時(shí)的運(yùn)行環(huán)境,不需要進(jìn)行參數(shù)傳遞,所以執(zhí)行時(shí)間更快。當(dāng)然,由于每次調(diào)用函數(shù)inline()時(shí),都會(huì)插入它的函數(shù)代碼,所以它會(huì)使程序的代碼增加,占用更多的存儲空間。

說明:① 內(nèi)聯(lián)函數(shù)的聲明或定義必須在函數(shù)的調(diào)用之前完成;② 一般而言,只有幾行程序代碼的(最好只有1~5行)、經(jīng)常被調(diào)用的簡單函數(shù)才適宜作為內(nèi)聯(lián)函數(shù)。以下3種函數(shù)不能作為內(nèi)聯(lián)函數(shù):遞歸函數(shù),函數(shù)體內(nèi)含有循環(huán)、switch、goto語句之類復(fù)雜結(jié)構(gòu)的函數(shù),或者具有較多程序代碼的大函數(shù)。

主站蜘蛛池模板: 托克逊县| 涿鹿县| 应城市| 东方市| 淮北市| 昭苏县| 临海市| 司法| 桃江县| 米脂县| 栖霞市| 榆中县| 尉氏县| 蒙自县| 江永县| 巴南区| 南乐县| 贵阳市| 乐陵市| 余庆县| 张掖市| 托克逊县| 讷河市| 九江市| 普兰店市| 定陶县| 鄢陵县| 镇原县| 夹江县| 木里| 连山| 明星| 京山县| 宁武县| 葵青区| 阳西县| 额尔古纳市| 孝义市| 常德市| 嘉荫县| 秭归县|