2014-02-12 61 views
1

當函數重載被用於實際去哪個函數..?C++中的函數重載和數字數據類型

void print(int); //print 1 
void print(char *); //print 2 
void set (int *); //set 1 
void set (const char *); //set 2 
int main() { 
print (0); //Which print? 
set (0); //Which set? 

什麼是2 ..的類型?是它intshort ...對於例如...在下面的代碼使f被稱爲..爲f(2)

void f(int, double = 0.0); //f1 
void f(short); //f2 
+2

如果不明確,則不會編譯。而在「設置」的情況下,我敢肯定它是不明確的。你嘗試編譯它嗎? – m24p

回答

2

打印(0); //哪個打印?

print(int)因爲0int。這是完全匹配—不需要轉換。

set(0); //哪個設置

歧義,因爲0(其爲int)可以轉換成任何類型的空指針。所以這段代碼會導致編譯錯誤。

什麼是2 ..的類型?它是整數還是短整數

它是int。所有整數文字是int類型如果它沒有任何後綴

對於如...下面的代碼F稱..對於f(2)

現在你應該自己弄清楚。