1.函數重載跟返回類類型無關。
如果定義一下兩個函數:
int Func();
void Func();
如果int a = Func();那麼編譯器知道調用第一個函數。
但是C++允許直接使用函數而不需要返回值。
Func();這個時候就不知道調用哪個函數,編譯報錯。
2.二義性。 特別是double類型的隱式轉換的二義性。
int max(int a, int b);
int max(int a, float b);
如果這時候調用函數 max(1, 0.4);
函數默認0.4爲double型,此時不知道應該向int還是像float轉換,所以造成二義性。
如果又定義了一個函數 int max(int a, double b); 那麼max(1,0.4)會調用它。