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...