內聯函數inline與宏界說深刻解析。本站提示廣大學習愛好者:(內聯函數inline與宏界說深刻解析)文章只能為提供參考,不一定能成為您想要的結果。以下是內聯函數inline與宏界說深刻解析正文
內聯函數的優勝性:
一:inline界說的類的內聯函數,函數的代碼被放入符號表中,在應用時直接停止調換(像宏界說一樣睜開),沒有了挪用的開支,效力很高。
二:類的內斂函數是一個真實的函數。
三:應用內聯函數inline可以完整代替表達式情勢的宏界說。
例子:
Class A
{
public:
int readTest()
{
return nTest;
}
void setTest(int i);
};
inline void A::setTest(int i)
{
nTest=i;
};
解釋:類A的成員函數readTest()和setTest()都是內聯函數,readTest()函數的界說體被放在類聲明當中,因此readTest()主動轉換成inline函數,setTest函數的界說體在類聲明以外,是以要加上inline症結字。
總結inline函數與宏界說的差別:
1、內斂函數在編譯時睜開,而宏是在預編譯時就睜開了
2、在編譯時內斂函數可以直接被嵌入到目的函數代碼中,而宏只是一個簡略的文本調換
3、內斂函數可以完成諸如類型的檢測、語句能否准確等編譯功效,宏就不具有這類功效
4、宏不是函數,而inline函數是函數
5、宏在界說時要當心處置宏參數,(普通情形是把參數用括弧括起來)。