溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

c++中如何使用inline內(nèi)聯(lián)函數(shù)

發(fā)布時間:2021-07-06 17:39:31 來源:億速云 閱讀:147 作者:Leah 欄目:編程語言

c++中如何使用inline內(nèi)聯(lián)函數(shù),很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

問題描述:類中成員函數(shù)缺省默認(rèn)是內(nèi)聯(lián)的,如果在類定義時就在類內(nèi)給出函數(shù)定義,那當(dāng)然最好。如果在類中未給出成員函數(shù)定義,而又想內(nèi)聯(lián)該函數(shù)的話,那在類外要加上 inline,否則就認(rèn)為不是內(nèi)聯(lián)的。內(nèi)聯(lián)函數(shù)的inline要加在函數(shù)前面,不可以加在聲明前面。

class A{  public:void Foo(int x, int y) { } // 自動地成為內(nèi)聯(lián)函數(shù)}//正確寫法:// 頭文件class A{  public:  void Foo(int x, int y);}// 定義文件inline void A::Foo(int x, int y){} //錯誤寫法:inline void Foo(int x, int y); // inline 僅與函數(shù)聲明放在一起void Foo(int x, int y){}

1. 內(nèi)聯(lián)函數(shù)作用:為了解決一些頻繁調(diào)用的小函數(shù)大量消耗棧空間(棧內(nèi)存)的問題,特別的引入了 inline 修飾符,表示為內(nèi)聯(lián)函數(shù)。

例子:

#include <stdio.h>//函數(shù)定義為inline即:內(nèi)聯(lián)函數(shù)inline char* dbtest(int a) {  return (i % 2 > 0) ? "奇" : "偶";}  int main(){  int i = 0;  for (i=1; i < 100; i++) {    printf("i:%d  奇偶性:%s /n", i, dbtest(i));    }}

內(nèi)聯(lián)函數(shù)是在程序編譯的時候替換的方式加入程序中的。

2. 內(nèi)聯(lián)函數(shù)使用的限制:

inline 的使用是有所限制的,inline 只適合涵數(shù)體內(nèi)代碼簡單的涵數(shù)使用,不能包含復(fù)雜的結(jié)構(gòu)控制語句例如 while、switch,并且不能內(nèi)聯(lián)函數(shù)本身不能是直接遞歸函數(shù)(即,自己內(nèi)部還調(diào)用自己的函數(shù))。

代碼較長,內(nèi)部出現(xiàn)循環(huán)不適合使用內(nèi)聯(lián)函數(shù)。

3. 內(nèi)聯(lián)函數(shù)只是一個對編譯器的建議,具體實不實現(xiàn)看編譯器認(rèn)為函數(shù)復(fù)不復(fù)雜。

4.內(nèi)聯(lián)函數(shù)最好放在頭文件中。

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI