記 C 基礎之二 內聯函式 inline

2021-10-06 07:25:36 字數 826 閱讀 9673

github c++基礎知識

inline int max(int a, int b)
當編譯器看到inline後,為該函式建立一段**,以便在以後每次碰到該函式呼叫時都用一段**來替換。

相當於把函式裡面的內容寫在呼叫函式處。

不用進入函式的步驟,直接進入函式體。

相當於巨集,但比巨集多了型別檢測,真正具有函式特性。

不能包含迴圈、遞迴、switch等複雜操作。

在類中定義的成員函式,除了虛函式,其他的函式都會隱式地當成內聯函式。

內聯函式會增加可執行檔案的大小。

內聯函式的改變需要重新編譯,不能直接鏈結。

是否內聯是不可控的,取決於編譯器。

巨集代替小函式有缺陷

inline int max(int a,int b) 

#define max(a,b) ((a)>(b)?(a):(b))

a>b,則對於上面的內聯和巨集定義,max(a++)≠max(a++,b)

。對於左邊內聯函式返回的是a(使用的是未加之前的a),而對於右邊巨集定義→a++>b?a++:b返回的是(a+1)++,即a+1

內聯函式會做型別檢測或自動型別轉換,巨集定義不會。

類中宣告、類中定義的成員函式,後者會自動轉換為內聯函式,可以訪問成員變數,而巨集定義的函式不可以。

內聯函式在執行期間可以除錯,而巨集不可以。

C 基礎 內聯函式

c 中的const常量可以替代巨集常數定義,如 const int a 3 define a 3c 中是否有解決方案替代巨集 片段呢?替代巨集 片段就可以避免巨集的 c 中推薦使用內聯函式替代巨集 片段 c 中使用inline關鍵字宣告內聯函式 內聯函式宣告時inline關鍵字必須和函式定義結合在一...

C 基礎之二

c 基礎之二 1 靜態字段 靜態成員 由該類的所有例項共享,其變化,例項是對所有可見。2 宣告為static有 場 方法 屬性 建構函式 運營商 事件。3 不同的常量靜態量 位置,在編譯時被編譯器替換。4 類屬性與類字段不同 屬性是乙個函式成員,它不為資料儲存分配記憶體並執行 5 屬性get訪問器的...

C 基礎 this指標 內聯函式

本文學習this指標 inline內聯函式 this指標原理 this指標的使用 class a private inline內聯函式的分類 內聯函式主要分為兩種 類內內聯函式 類外全域性內聯函式 類內 見上面的例子 不用顯示的去宣告 類外 class a inline int a minus in...