內聯函式的作用

2022-05-15 09:17:21 字數 1189 閱讀 1504

內聯函式必須是和函式體宣告在一起,才有效。像這樣的申明是沒有效果的:

inline tablefunction(int i)

編譯器只是把函式作為普通的函式宣告,我們必須定義函式體:

inline tablefunction(int i) ;

這樣我們才算定義了乙個內聯函式。我們可以把它作為一般的函式一樣呼叫。但是執行速度卻比一般函式的執行速度要快。

我們也可以將定義在類的外部的函式定義為內聯函式,比如:

class tableclass

inline

int dec()

intgetnum();

}inline

int tableclass::getnum()

上面申明的三個函式都是內聯函式。在c++中,在類的內部定義了函式體的函式,被預設為是內聯函式。而不管你是否有inline關鍵字。

內聯函式在c++類中,應用最廣的,應該是用來定義訪問函式。我們定義的類中一般會把資料成員定義成私有的或者保護的,這樣,外界就不能直接讀寫我

們類成員的資料了。

對於私有或者保護成員的讀寫就必須使用成員介面函式來進行。如果我們把這些讀寫成員函式定義成內聯函式的話,將會獲得比較好的效率。

class sample

void settest(int i)

}

當然,內聯函式也有一定的侷限性。就是函式中的執行**不能太多了,如果,內聯函式的函式體過大,一般的編譯器會放棄內聯方式,而採用普通的方式

呼叫函式。這樣,內聯函式就和普通函式執行效率一樣了。

內聯函式具有一般函式的特性,它與一般函式所不同之處只在於函式呼叫的處理。一般函式進行呼叫時,要將程式執行權轉到被呼叫函式中,然後再返回到呼叫它的函式中;而內聯函式在呼叫時,是將呼叫表示式用內聯函式體來替換。

在使用內聯函式時,應注意如下幾點: 

1.在內聯函式內不允許用迴圈語句和開關語句。 

如果內聯函式有這些語句,則編譯將該函式視同普通函式那樣產生函式呼叫**,遞迴函式是不能被用來做內聯函式的。內聯函式只適合於只有1~5行的小函式。對乙個含有許多語句的大函式,函式呼叫和返回的開銷相對來說微不足道,所以也沒有必要用內聯函式實現。 

2.內聯函式的定義必須出現在內聯函式第一次被呼叫之前。 

3.本欄目講到的類結構中所有在類說明內部定義的函式是內聯函式。

C 內聯函式的作用

include include using namespace std inline void func int main gettimeofday end t,null n time end t.tv sec start t.tv sec 1000 1000 end t.tv usec start...

內聯函式的作用和幾點注意

內聯函式的特點 一 關鍵字inline必須與函式定義體放在一起才能使函式成為內聯,僅將inline放在函式宣告前面不起任何作用。二 定義在類宣告之中的成員函式將自動地成為內聯函式。內聯函式的作用 1.替代巨集,增加 可讀性。2.提高 執行效率。這點和巨集的作用相同。原因在於,省略了函式引數壓棧出棧和...

C 內聯函式作用及弊端

因為函式呼叫時候需要建立時間 引數傳入傳遞等操作,造成了時間和空間的額外開銷。c 追求效率所以引入了內聯的概念。通過編譯器預處理,在呼叫內聯函式的地方將內聯函式內的語句copy到呼叫函式的地方,從而提高了效率,減少了一些不必要的開銷。使用關鍵字 inline函式定義形式 inline 返回型別 函式...