2
如果我的代碼:參數或返回類型隱式轉換在C++中優先嗎?
int f(int a) { return a; }
double f(double g) { return g; }
int main()
{
int which = f(1.0f);
}
其中超載˚F叫,爲什麼?
如果我的代碼:參數或返回類型隱式轉換在C++中優先嗎?
int f(int a) { return a; }
double f(double g) { return g; }
int main()
{
int which = f(1.0f);
}
其中超載˚F叫,爲什麼?
返回類型根本不用於超載目的,因此您將獲得雙重版本。
要理解爲什麼它是這樣,考慮這個電話:
int bar = f(g(h(foo)));
由於重載決議只涉及參數,可以推斷小時,則G終於樓獨立。如果涉及到返回值,則需要同時推導出它們。如果每個都有10個過載,在第一種情況下,你檢查30個可能的過載,第二種情況下可能有1000個組合。如果您認爲這種嵌套代碼很少見,請考慮
std::cout << "int i = " << i << std::endl;