內(nèi)聯(lián)表值函數(shù) 成員函數(shù)一定是內(nèi)聯(lián)函數(shù)?
成員函數(shù)一定是內(nèi)聯(lián)函數(shù)?不一定。成員函數(shù)屬于對(duì)象,而靜態(tài)函數(shù)屬于類(lèi)。如果函數(shù)是在類(lèi)中定義的,編譯器將默認(rèn)為內(nèi)聯(lián)函數(shù),如果函數(shù)的定義被輸出,并且關(guān)鍵字inline被添加到函數(shù)的聲明中,則函數(shù)將成為內(nèi)聯(lián)函
成員函數(shù)一定是內(nèi)聯(lián)函數(shù)?
不一定。
成員函數(shù)屬于對(duì)象,而靜態(tài)函數(shù)屬于類(lèi)。如果函數(shù)是在類(lèi)中定義的,編譯器將默認(rèn)為內(nèi)聯(lián)函數(shù),如果函數(shù)的定義被輸出,并且關(guān)鍵字inline被添加到函數(shù)的聲明中,則函數(shù)將成為內(nèi)聯(lián)函數(shù),否則它就是一個(gè)成員函數(shù)。
什么是內(nèi)聯(lián)函數(shù)啊~和普通的成員函數(shù)有什么區(qū)別嗎?
內(nèi)聯(lián)函數(shù)定義:將函數(shù)定義為內(nèi)聯(lián)函數(shù)就是在程序的每個(gè)調(diào)用點(diǎn)將其“內(nèi)聯(lián)”展開(kāi)。在函數(shù)返回類(lèi)型之前添加inline關(guān)鍵字。在類(lèi)聲明中定義的成員函數(shù)自動(dòng)成為內(nèi)聯(lián)函數(shù)。內(nèi)聯(lián)函數(shù)的應(yīng)用:
1。重復(fù)調(diào)用函數(shù);
2。函數(shù)只有幾行,不包含for、while和switch語(yǔ)句。內(nèi)聯(lián)函數(shù)應(yīng)該在頭文件中定義,這與其他函數(shù)不同。
成員函數(shù)一定是內(nèi)聯(lián)函數(shù)嗎?
不一定。當(dāng)成員函數(shù)的主體寫(xiě)在類(lèi)的聲明中,并且沒(méi)有循環(huán)語(yǔ)句和開(kāi)關(guān)語(yǔ)句時(shí),它是內(nèi)聯(lián)函數(shù),其余的是非內(nèi)聯(lián)函數(shù)
內(nèi)聯(lián)函數(shù)比普通函數(shù)的優(yōu)點(diǎn)如下:
消除了函數(shù)調(diào)用的時(shí)間開(kāi)銷(xiāo)。內(nèi)聯(lián)函數(shù)具有源代碼級(jí)別的函數(shù)結(jié)構(gòu),但它們不具有編譯后函數(shù)的屬性。因?yàn)楸仨氃谡{(diào)用函數(shù)之前保存寄存器,在函數(shù)返回時(shí)還原寄存器,并且復(fù)制實(shí)際參數(shù),所以程序也必須在新位置執(zhí)行。與宏定義相比,內(nèi)聯(lián)函數(shù)的優(yōu)點(diǎn)如下:
1。內(nèi)聯(lián)函數(shù)可以在運(yùn)行時(shí)調(diào)試,但宏定義不能。編譯器會(huì)對(duì)內(nèi)聯(lián)函數(shù)的參數(shù)類(lèi)型進(jìn)行安全檢查或自動(dòng)類(lèi)型轉(zhuǎn)換(與普通函數(shù)相同),但宏定義不會(huì)。內(nèi)聯(lián)函數(shù)可以訪問(wèn)類(lèi)的成員變量,但宏定義不能。在類(lèi)內(nèi)聯(lián)函數(shù)中同時(shí)定義聲明成員函數(shù)可以減少CPU開(kāi)銷(xiāo),程序的整體速度會(huì)更快,但是當(dāng)內(nèi)聯(lián)函數(shù)較大時(shí),會(huì)產(chǎn)生相反的效果,所以一般用于較小的函數(shù)。2內(nèi)聯(lián)函數(shù)的聲明方法有兩種,一種是在函數(shù)前使用內(nèi)聯(lián)關(guān)系詞,另一種是在類(lèi)3中使用內(nèi)聯(lián)關(guān)系詞。Inline是對(duì)編譯器的請(qǐng)求。下列情況將阻止編譯器遵從請(qǐng)求。如果函數(shù)包含循環(huán)、switch或goto語(yǔ)句、遞歸函數(shù)和靜態(tài)函數(shù),則可以看出內(nèi)聯(lián)函數(shù)和成員函數(shù)之間沒(méi)有區(qū)別。不同之處在于如何加速函數(shù)的執(zhí)行。