case
voidf();
void f(int
);void f(int, int
);void f(double, double = 3.14);
匹配原則:
1)其形參數量與本次呼叫提供的實參數量相等
2)每個實參的型別與對應的形參型別相同,或者可以轉換成形參的型別;
尋找最佳匹配:
1)該函式每個實參的匹配都不劣於其他可行函式需要的匹配;
2)至少有乙個實參的匹配優於其他可行函式提供的匹配;
例子:
a) f(2.56,38);b) f(
38);
c) f(
32,0
);d) f(
3.9,9.8);
a)可行函式是void f(int, int)與void f(double, double =3.2)。但是最佳匹配不存在,考慮第乙個引數 void f(double, double =3.2) 優勢明顯;
但考慮到第二個實參38時,void f(int, int) 優勢明顯,具有二義性而拒絕其請求;
b)void f(int);
c)void f(int, int);
d)double f(double, double = 3.2);
tips:
函式過載時,應盡量避免強制型別轉換。
函式匹配與const實參
record(acount&);record(
const acount&);
const
acount a;
acount b;
record(a);
//呼叫record(const acount&);
record(b);//
呼叫record(acount&);
C 函式過載與函式匹配
c primer 筆記,整理關於函式過載與函式匹配的筆記。void func int a 原函式 void func double a 正確 形參型別不同 void func int a,int b 正確 形參個數不同 int func int a 錯誤 只有返回型別不同 typedef int i...
c 函式過載與匹配
匹配規則 精確匹配 常量版本匹配 變數提公升 算數 指標轉換 類型別轉換 當我們為函式過載,並呼叫過載後的函式時,編譯器會自動根據引數型別進行匹配與轉換但是此時 容易出現二義性錯誤,函式引數轉換與型別提公升容易混淆,例如當我們同時過載了float double 版本的函式時,傳入乙個int型實參,就...
C 之 函式過載
函式的過載 函式的過載就是可以在乙個程式中使用同名的若干個函式。主要的限制是給定名稱的每個函式必須有不同的引數列表。也就是說,乙個引數列表中的引數型別與另乙個不同 不僅僅是引數名不同,實際上,如果滿足下列條件之一,兩個同名函式就是不同的 1.每個函式的引數個數不同 2.引數的個數相同,但至少有一對對...