1,函式匹配(過載確定)
過載確定的三個步驟:
(1)候選函式
(2)選擇可行函式
(3)尋找最佳匹配
比較特殊的是print(3.14),它的引數是double型別,但是選擇候選函式的時候,因為沒有最完美匹配,只能丟失精度,強制轉換為int型別。還有print(3.2,1)這種型別,因為目標函式不唯一,有二義性,所以會出錯。我們最好不要出現這樣的寫法,如果非要這樣,可以強制轉換如下:
print(static_cast(40),3.14);//c++(推薦)
2,實參型別轉換
第乙個例子:
字元會優先選擇int型別。
第二個例子:
如果變成把long改為double,情況就不一樣了。
第三個例子(列舉):
abc = 110,但是,因為有更優的選擇,abc不需要轉型就能匹配,選擇了print(tokens a)。
第四個例子:
第五個例子:
第六個例子:
這兩個其實是乙個意思,同時出現會報錯。
同理,這兩個也一樣:
void print(const int* a)
void print(const int* const a)
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 學習 基礎 過載函式 實參型別轉換
date 05 03 21 16 36 description 過載函式 實參型別轉換 轉換等級 1.精確匹配 2.通過型別提公升 3.通過標準轉換 4.通過類型別轉換 引數匹配和列舉型別 過載和const形參 include using namespace std class account ac...