为什么函数不能被返回类型重载,不应该有支持这种重载的语言。我想知道发生了什么,如果它允许,或者为什么它不允许这种函数重载的返回类型。
int func();
bool func();
int main()
{
int iret = func();
bool bret = func();
}
在我的脑海里总会出现这个问题。希望得到满意的答案。
答案 0 :(得分:2)
像
这样的功能double function fn1()
{
int a = 2;
return a;
}
在上述例如a将在返回时隐式转换为double。
int function fn1()
{
double a = 2;
return a;
}
在上述例如a将在返回时隐式转换为int。
此fn的fn调用类似于int a = fn1();
或double a = fn1();
。
在任何一种情况下,两种定义都可能导致要调用的含糊不清。
返回值存储在int
或double
中这一事实对确定要调用的fn没有影响。首先解析然后执行该函数,然后分配返回值。
如果两者都没有返回类型,则调用只是fn1();
使其不明确,是否使用返回类型fn1()
或int
来调用double