內聯函數的作用


一、什么是內聯函數

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

Inline Tablefunction(int I)

編譯器只是把函數作為普通的函數聲明,我們必須定義函數體:

Inline tablefunction(int I) {return I*I};

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

 

二、類中的內聯函數

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

Class TableClass{
    Private:
        int i, j;
    Public:
        int add(){return i+j;}
        inline int dec(){return i-j;}
        int GetNum();
}
inline int Tableclass::GetNum(){return i;}

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

 

三、類中內聯函數訪問私有數據成員

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

們類成員的數據了。

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

Class sample{
    Private:
        int nTest;
    Public:
        int readtest() { return nTest; }
        void settest(int i) { nTest=i; }
}

 

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

調用函數。這樣,內聯函數就和普通函數執行效率一樣了。

 

四、使用內聯函數應注意的事項

內聯函數具有 一般函數的特性,它與一般函數所不同之處只在於 函數調用的處理。一般函數進行調用時,要將程序執行權轉到 被調用函數中,然后再返回到調用它的函數中;而內聯函數在調用時,是將調用 表達式用內聯函數體來替換。
 
在使用內聯函數時,應注意如下幾點: 
1.在內聯函數內不允許用 循環語句和開關語句。 
如果內聯函數有這些語句,則編譯將該函數視同普通函數那樣產生函數調用代碼,遞歸函數是不能被用來做內聯函數的。內聯函數只適合於只有1~5行的小函數。對一個含有許多語句的大函數,函數調用和返回的開銷相對來說微不足道,所以也沒有必要用內聯函數實現。 
2.內聯函數的定義必須出現在內聯函數第一次被調用之前。 
3.本欄目講到的類結構中所有在類說明內部定義的函數是內聯函數。
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM