为什么函数不能不被它的返回类型重载,不应该有支持这种重载的语言。我想知道如果它允许会发生什么,或者为什么它不允许通过其返回类型重载此类函数的原因。
int func();
bool func();
int main()
{
int iret = func();
bool bret = func();
}
这个问题总是在我脑海中浮现。希望得到满意的答复。
为什么函数不能不被它的返回类型重载,不应该有支持这种重载的语言。我想知道如果它允许会发生什么,或者为什么它不允许通过其返回类型重载此类函数的原因。
int func();
bool func();
int main()
{
int iret = func();
bool bret = func();
}
这个问题总是在我脑海中浮现。希望得到满意的答复。
像这样的功能
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();
or double a = fn1();
。
在任何一种情况下,这两种定义都可能导致关于调用哪个定义的歧义。返回值存储在int
或double
不影响确定要调用的 fn 的事实。该函数首先解析然后执行,然后分配返回值。
如果两者都没有返回类型,则调用只会fn1();
使其模棱两可,无论是fn1()
使用返回类型int
还是调用double