內(nèi)聯(lián)函數(shù)與普通函數(shù)的區(qū)別 成員函數(shù)一定是內(nèi)聯(lián)函數(shù)?
成員函數(shù)一定是內(nèi)聯(lián)函數(shù)?不一定。成員函數(shù)屬于對象,而靜態(tài)函數(shù)屬于類。如果函數(shù)是在類中定義的,編譯器將默認(rèn)為內(nèi)聯(lián)函數(shù),如果函數(shù)的定義被輸出,并且在聲明函數(shù)時添加關(guān)鍵字inline,則函數(shù)將成為內(nèi)聯(lián)函數(shù),
成員函數(shù)一定是內(nèi)聯(lián)函數(shù)?
不一定。
成員函數(shù)屬于對象,而靜態(tài)函數(shù)屬于類。如果函數(shù)是在類中定義的,編譯器將默認(rèn)為內(nèi)聯(lián)函數(shù),如果函數(shù)的定義被輸出,并且在聲明函數(shù)時添加關(guān)鍵字inline,則函數(shù)將成為內(nèi)聯(lián)函數(shù),否則它將成為成員函數(shù)。
內(nèi)聯(lián)函數(shù)帶來的好處有有哪些?
內(nèi)聯(lián)函數(shù)比普通函數(shù)的優(yōu)點如下:
消除了函數(shù)調(diào)用的時間開銷。內(nèi)聯(lián)函數(shù)從源代碼層看具有函數(shù)的結(jié)構(gòu),但編譯后不具有函數(shù)的性質(zhì)。因為必須在調(diào)用函數(shù)之前保存寄存器,在函數(shù)返回時還原寄存器,并且復(fù)制實際參數(shù),所以程序也必須在新位置執(zhí)行。與宏定義相比,內(nèi)聯(lián)函數(shù)的優(yōu)點如下:
1。內(nèi)聯(lián)函數(shù)可以在運行時調(diào)試,但宏定義不能。編譯器會對內(nèi)聯(lián)函數(shù)的參數(shù)類型進行安全檢查或自動類型轉(zhuǎn)換(與普通函數(shù)相同),但宏定義不會。內(nèi)聯(lián)函數(shù)可以訪問類的成員變量,但宏定義不能。聲明成員函數(shù)在類號中同時定義,自動轉(zhuǎn)換為內(nèi)聯(lián)函數(shù)