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)会调用它。