这样不是重载。
函数重载要求函数的参数个数不同或者参数类型不同。
因为调用函数的时候无法确认函数的返回类型,所以仅返回类型不同的函数都可以匹配,这样就造成二义性,所以仅仅是返回类型不同是不能重载的,
比如有
int f(int a)
{
return a+2;
}
float f(int a)
{
return a/3.0;
}
int main()
{
f(6); //该调用哪个呢?
}
函数重载是是根据函数的参数列表区分函数的版本,返回值不同是不能区分的。
比如 int fun( int a,int b);
在编译的时候,编译器编译函数,生成一个类似"_fun_int_int"的名称放在库中,以便程序调用的时候使用。
如果你想重载void fun( int a,int b);
生成的函数名称也是"_fun_int_int"
函数在库中的名称是唯一的,就像你在程序中定义变量一样。
这就算是重定义吧(姑且这么说),这时编译器该调用哪个函数?
函数重载只看参数个数和类型 所以如果只是返回值相同的函数就不是重载函数了
不是重载函数,编译器应该会报错。