c 函式過載和巨集替換

2021-10-08 11:38:30 字數 676 閱讀 6691

函式過載

函式過載指的是,在同一作用域中,幾個同名函式擁有不同的引數個數,型別或順序,編譯器會推演函式實參型別,選擇合適的函式進行呼叫,若沒有的話就會報錯,

注意:僅僅返回型別不同不能構成函式過載

呼叫原理

編譯器為了區分每乙個函式,對每乙個函式的名字進行了修飾,使它成為全域性唯一的函式。

c++為什麼支援函式過載

即使函式名字相同,也會因為不同的引數個數,型別和順序,產生不同的函式名字,對應著不同的函式,從而實現函式過載

巨集替換預處理的一種,它根據一系列預定義的規則,替換一定的文字模式

巨集常量

#define max 1024
優點:能提高**可讀性,

缺點:在編譯期間不會進行型別檢測,只是進行簡單的字元替換,

巨集函式

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

intmain()

列印結果為22。巨集替換只是進行簡單的字元替換,這裡b++執行了兩次,

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

巨集函式優點: 提高**效率

巨集函式缺點:沒有型別,不會進行引數檢測,錯誤會延遲至執行時期;對於巨集函式引數沒有加括號的情況可能會發生錯誤

內聯函式 巨集替換

傳智掃地僧課程學習筆記。inline int myfunc int a,int b 內聯函式的實現和宣告必須在一起!你可以簡單的理解為,內聯函式和巨集替換類似,也因此沒有真正函式的壓棧,出棧,適合短小的函式,內聯是一種請求,編譯器不一定就這麼處理,內聯的限制 不能有迴圈語句,不能有過多的條件判斷,下...

C語言巨集替換

當乙個巨集引數被放進巨集體時,這個巨集引數會首先被全部展開 有例外,見下文 當展開後的巨集引數被放進巨集體時,預處理器對新展開的巨集體進行第二次掃瞄,並繼續展開。例如 define param x x define addparam x int x param addparam 1 因為addpar...

c 巨集替換與內聯函式的區別

includeusing namespace std define myfunc a,b a b a b inline int myfunc int a,int b int main 內聯函式執行結果 巨集替換執行結果 通過了解內聯函式的內部機制後,很自然會想到同樣是 的替換,那麼內聯函式的替換與巨...