函式過載遇上函式指標
-將過載函式名賦值為函式指標時
1. 根據過載規則挑選與函式指標列表一致的候選者;
2. 嚴格匹配候選者的函式型別與函式指標的函式型別
看下面的**:
#include int func(int列印結果c=1x)int func(int x, int
y)int func(int x, int y, int
z)typedef
int(*pfunc)(int
a);int
main()
做這樣的修改,typedef void(*pfunc)(int a);
編譯時將出現這樣的錯誤,
說明當函式過載遇上函式指標時,將嚴格匹配候選者的函式型別與函式指標的函式型別
注意:-函式過載必然發生在同乙個作用域中
-編譯器需要用引數列表或函式型別進行函式選擇。(返回值不作為過載的依據,但是當函式過載遇上函式指標時,就需要考慮返回值了,會進行嚴格的匹配)
無法直接通過函式名得到過載函式的入口位址
強調同一作用域的原因:
因為在c++中不止乙個作用域,而c語言只有乙個作用域-全域性作用域。
看下面這個例子:
該程式說明,無法直接通過函式名得到過載函式的入口位址
當函式過載遇上函式指標
include include using namespace std void func void func int a void func int a,int b void func string a,string b typedef void fp1 int,int typedef void ...
當函式模版遇上函式過載
demo 1 include using namespace std 讓 型別引數化 方便程式設計師進行編碼 泛型程式設計 template 告訴c 編譯器 我要開始泛型程式設計了 看到t,不要隨便報錯 template void myswap t a,t b void myswap int a,c...
當函式模版遇上函式過載
demo 1 include using namespace std 讓 型別引數化 方便程式猿進行編碼 泛型程式設計 template 告訴c 編譯器 我要開始泛型程式設計了 看到t,不要隨便報錯 template void myswap t a,t b void myswap int a,cha...