內(nèi)聯(lián)函數(shù)inline與宏定義深入解析
內(nèi)聯(lián)函數(shù)的優(yōu)越性:
一:inline定義的類的內(nèi)聯(lián)函數(shù),函數(shù)的代碼被放入符號表中,在使用時直接進(jìn)行替換(像宏定義一樣展開),沒有了調(diào)用的開銷,效率很高。
二:類的內(nèi)斂函數(shù)是一個真正的函數(shù)。
三:使用內(nèi)聯(lián)函數(shù)inline可以完全取代表達(dá)式形式的宏定義。
例子:
Class A
{
public:
int readTest()
{
return nTest;
}
void setTest(int i);
};
inline void A::setTest(int i)
{
nTest=i;
};
說明:類A的成員函數(shù)readTest()和setTest()都是內(nèi)聯(lián)函數(shù),readTest()函數(shù)的定義體被放在類聲明之中,因而readTest()自動轉(zhuǎn)換成inline函數(shù),setTest函數(shù)的定義體在類聲明之外,因此要加上inline關(guān)鍵字。
總結(jié)inline函數(shù)與宏定義的區(qū)別:
1、內(nèi)斂函數(shù)在編譯時展開,而宏是在預(yù)編譯時就展開了
2、在編譯時內(nèi)斂函數(shù)可以直接被嵌入到目標(biāo)函數(shù)代碼中,而宏只是一個簡單的文本替換
3、內(nèi)斂函數(shù)可以完成諸如類型的檢測、語句是否正確等編譯功能,宏就不具備這種功能
4、宏不是函數(shù),而inline函數(shù)是函數(shù)
5、宏在定義時要小心處理宏參數(shù),(一般情況是把參數(shù)用括弧括起來)。
相關(guān)文章
在C語言中對utmp文件進(jìn)行查找和寫入操作的函數(shù)小結(jié)
這篇文章主要介紹了在C語言中對utmp文件進(jìn)行查找和寫入操作的函數(shù)小結(jié),包括pututline()函數(shù)和getutline()函數(shù)以及getutid()函數(shù),需要的朋友可以參考下2015-08-08
C++中智能指針最常用的shared_ptr和unique_ptr
C++中的智能指針最常用的是shared_ptr和unique_ptr,C++新手最常問的問題是我從一個函數(shù)中拿到unique_ptr,但要轉(zhuǎn)成shared_ptr才能使用,要怎么轉(zhuǎn)換?同理是否能將shared_ptr轉(zhuǎn)換成unique_ptr,面對這些問題,跟隨小編一起看看吧2022-08-08
剖析C語言關(guān)鍵字之void,const,return
這篇文章主要為大家介紹了C語言關(guān)鍵字之void,const,return,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-01-01
數(shù)據(jù)結(jié)構(gòu)與算法:單向鏈表實現(xiàn)與封裝
今天小編就為大家分享一篇關(guān)于數(shù)據(jù)結(jié)構(gòu)與算法:單向鏈表實現(xiàn)與封裝,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12

