內(nèi)聯(lián)函數(shù)inline與宏定義深入解析
內(nèi)聯(lián)函數(shù)的優(yōu)越性:
一:inline定義的類的內(nèi)聯(lián)函數(shù),函數(shù)的代碼被放入符號表中,在使用時直接進行替換(像宏定義一樣展開),沒有了調(diào)用的開銷,效率很高。
二:類的內(nèi)斂函數(shù)是一個真正的函數(shù)。
三:使用內(nèi)聯(lián)函數(shù)inline可以完全取代表達式形式的宏定義。
例子:
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++?基礎(chǔ)函數(shù)的介紹及使用(Vector+deque+STL)
這篇文章主要介紹了C++?基礎(chǔ)函數(shù)的介紹及使用(Vector+deque+STL),文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-06-06C語言中單鏈表的基本操作(創(chuàng)建、銷毀、增刪查改等)
這篇文章主要介紹了C語言中單鏈表的基本操作(創(chuàng)建、銷毀、增刪查改等),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02VC++ loadlibrary()加載三方dll失敗, 返回錯誤碼:126的解決方法
今天在編寫VC++ loadlibrary()加載三方dll是總是失敗,并且返回錯誤碼:126,這里就為大家分享一下具體的解決方法2021-03-03