C 高階剖析(六 )之函式過載

2021-09-30 20:55:52 字數 2835 閱讀 7342

1.1 函式過載

1.1.1 滿足條件

1.1.2 函式過載

1.1.3 **例項

#include

#include

#include

intfunc

(int a ,

int b)

intfunc

(int a)

intfunc

(const

char

* a)

intmain()

1.1.4 函式引數遇上預設引數會怎樣

//  錯誤程式,函式不知道怎麼呼叫了

#include

#include

intfunc

(int a ,

int b)

intfunc

(int a,

int b ,

int c =10)

intmain()

1.2函式過載的本質

1.2.1本質

1.2.2 例項**

#include

#include

intadd

(int a ,

int b)

intadd

(int a,

int b ,

int c )

intmain()

1.3 函式過載遇上函式指標

1.3.1 **

#include

#include

#include

intadd

(int a ,

int b)

intadd

(int a,

int b ,

int c )

intadd

(const

char

* str)

typedef

int(

* func)

(int

,int);

typedef

double

(* func2)

(int

,int);

intmain()

1.3.2理論

注意:函式引數遇上函式指標的時候就會更加嚴格,返回值也需要考慮。同時函式指標不能進行型別轉換(包括返回值和函式引數)。

1.3.3比較下列程式函式呼叫

#include

#include

#include

intadd

(int a ,

int b)

intadd

(int a,

int b ,

int c =0)

typedef

int(

* func)

(int

,int);

intmain()

1.3.4 函式過載注意事項總結

#include

#include

intadd

(int a ,

int b)

intadd

(int a,

int b ,

int c )

intmain()

1.4 c++和c之間的相互呼叫

1.4.1

extern

"c"

1.4.2 例項**

add.**件

int

add(

int a,

int b)

;

add.c 檔案

#include

"add.h"

intadd

(int a,

int b)

根據上面的檔案生成add.o 檔案 :gcc -c add.c -o add.o

通過c++的方式呼叫 add.o g++ main.cpp add.o

main.cpp 檔案

#include

#include

"add.h"

intmain()

下面是c++通過兩種方式呼叫c**,直接呼叫add.c是沒有問題的,而通過呼叫add.o是有問題的,

因為c++預設是優先使用c++編譯的方式,所以對add.o是不識別的。

1.5.1 如何保證一段c**只會以c的方式進行編譯?

c編譯器中不能用 extern 「c」 {};只有c++編譯器中才可以直接用 extern 「c」 {};

那該怎麼辦呢?

#ifdef  __cplusplus

extern

"c"#endif

1.5.2注意事項

《C 深度剖析》學習日誌六 函式過載(下)

這段 該呼叫哪乙個函式呢?函式過載遇上函式指標 將過載函式名賦值給函式指標時 1.根據過載規則挑選與函式指標引數列表一致的候選者 2.嚴格匹配候選者的函式型別與函式指標的函式型別 函式過載必然發生在同乙個作用域中 編譯器需要用引數列表或引數型別進行函式選擇 無法直接通過函式名得到過載函式的入口位址 ...

深入剖析C 過載函式的應用

簡單剖析c 過載函式的應用 最近我在為我的c 函式過載而忙碌,真的是理解不會哦。用了好長的時間才弄明白,它是這麼樣實現的下面的就是來自一段網摘 感覺不錯的 過載函式 overloaded function 是c 支援的一種特殊函式,c 編譯器對函式過載的判斷更是c 語言中最複雜的內容之一 首先我們先...

C 函式的高階特性 函式過載

對比於c 語言的函式,c 增加了過載 overloaded 內聯 inline const 和virtual 四種新機制。其中過載和內聯機制既可用於全域性函式也可用於類的成員函式,const 與 virtual 機制僅用於類的成員函式。1.過載 overloaded 過載的理由 1 在c 程式中,可...