inline成員函式

2021-07-08 14:34:36 字數 572 閱讀 9782

注意這裡討論的只是類的成員函式。

1。在類的宣告裡實現的函式自動為inline。 也可以在類申明外定義為inline。但是這一部分必須與類的宣告在同乙個.h檔案裡。如果定義在cpp檔案裡,就會給出編譯錯誤。

注:程式設計時,我把函式體實現寫在cpp裡,結果就報錯:error lnk2019:無法解析的外部符號。

3。inline函式與效能的關係不是乙個肯定的關係,有可能加快,也有可能會變慢。有可能使**變大,也有可能變小。要測試才能知道。

4。inline函式比macro要好。因為inline函式更像乙個函式,它也作型別檢查,匹配。macro就只會簡單得展開。在很多情況下,macro展開有可能導致難以查到的錯誤!有大量c程式經驗的人對此不會陌生。

比如乙個求絕對值:

用macro:

#define abs(x) (x)>0?(x):-(x)

abs(i++)會被展開為:(i++)>0?(i++):-(i++)

顯然這不是我們想要的。因為i++被執行了兩次。

inline int abs(x)

abs(i++) 等價為:

j=i++;j>0?j:-j;

inline成員函式

一 用inline宣告的函式相當 define的作用,即用函式內容內建到程式中,這樣可以減少系統呼叫所花費的時間,特別是對於頻繁呼叫的函式,應該宣告為inline。但函式體太大的話,一般不宣告為inline。二 如果在類體中定義的成員函式,且函式體內沒有迴圈等控制結構,c 系統會自動將它作為inli...

inline 成員函式

呼叫函式時需要一定的時間和空間的開銷。c 提供一種提高效率的方法,即在編譯時將所呼叫函式的 直接嵌入到主調函式中,而不是將流程轉出去。這種嵌入到主調函式中的函式稱為 內建函式 inline function 又稱內嵌函式 在有些書中把它譯成 內聯函式 指定內建函式的方法很簡單,只需在函式首行的左端加...

成員函式既是inline又是virtual型別

inline型別表示在編譯時期進行函式展開,用函式體在函式呼叫出代替函式的呼叫 而vitual是c 多型的必要條件,但是要想表現出多型,必須要等到執行時,才知道真正呼叫的是哪乙個函式。表面上看這兩個關鍵字如果同時使用,會產生錯誤,但不會的。先簡單說一下虛表的機制 多型的實現是由虛表加以支援的,凡是有...