C++ 內聯函數

1、內聯函數的概念

在函數說明前冠以關鍵字inline的函數。列如:

inline int func(int x,int y);

2、編譯器是如何對待內聯函數的?

每當程序中出現對該函數的調用時,編譯器編譯時,就會將該函數的函數體全部插入到調用該函數的語句處,同時實參取代形參,於是程序運行時就不在進行函數調用。

實列說明:

#include<iostream>
using namespace std;

inline int box(int x, int y)
{
	return x*y;
}

int main()
{
	int a;
	a=box(4, 5);
	cout << a << endl;
}

解析:
由於定義函數時,將box函數定義爲內聯函數,所以編譯時在遇到調用函數box(4,5)時,就用box函數體來代替box(4,5),同時實參取代形參。這樣就變成了

int main()
{
	int a;
	a=4*5;
	cout << a << endl;
}

3、作用

內聯函數是一種空間換時間的做法,能夠提高程序運行的效率。

4、注意事項

1、內聯函數不建議聲明和定義分離,分離會導致鏈接錯誤。因爲inline被展開,就沒有函數地址了,鏈接就會找 不到。
2、內聯函數在第一次被調用之前必須進行完整的定義。
3、一般不包含複雜的語句。如循環語句、遞歸語句。
4、通常只有規模很小(1~5句)而且使用頻繁的函數才定義爲內聯函數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章