內聯成員函式及隱、顯式宣告
阿新 • • 發佈:2019-01-03
函式的呼叫過程需要消耗一些記憶體資源和執行時間來傳遞引數和返回值,要記錄呼叫時的狀態,以便保證呼叫完成後能夠正確地返回並繼續執行。
如果有的函式成員需要被頻繁呼叫,而且程式碼比較簡單,這個函式也可以定義為行內函數。
內聯成員函式的函式體,也會在編譯時被插入到每一個呼叫它的地方。這樣做可以減少呼叫的開銷,提高執行的效率,但是卻增加了編譯後代碼的長度。所以要在權衡利弊的基礎上慎重選擇,只有對相當簡單的成員函式才可以宣告位行內函數。
其中行內函數分為倆種:隱式宣告和顯式宣告。
隱式宣告:
將函式體直接放進類體內,這種方法稱之為隱式宣告。
class A
{
public:
void func(int x,int y){i=x;j=y;} //成員函式func()是行內函數
void print(){cout<<"兩數相乘為:"<<i*j<<endl;} //成員函式print()是行內函數
private:
int i,j;
};
顯式宣告:
為了保證類的簡潔,可以採取關鍵字inline顯式宣告的方式。
class A
{
public:
void func(int x,int y);{i=x;j=y;} //成員函式func()是行內函數,隱式內聯
void print(); //顯式宣告
private:
int i,j;
};
inline void A::print(){
cout<<"兩數相乘為:"<<i*j<<endl;
}