如果有一个函数的返回值不确定是int还是float,比如:
int func(const int& input) {return(input + 1);}
float func(const int& input) {return(input + 1);} //重定义报错
float a = func(1);
这样定义肯定是会报错的。因为同名函数的重载只能用于参数列表或者实现(定义)不同,而不能用于返回值不同的情况。
换一个思路,可以利用c++函数参数的引用传递,改成下面这种:
void func(float& output, const int& input){output = input + 1;}
void func(int& output, const int& input){output = input + 1;}
float a;
func(a, 1);
// 得到a=2
int b;
func(b, 1);
// 得到b=2
对于需要改动的值不加const,对于输入值可以加const保护一下不被修改。