1

为什么函数不能不被它的返回类型重载,不应该有支持这种重载的语言。我想知道如果它允许会发生什么,或者为什么它不允许通过其返回类型重载此类函数的原因。

int func();
bool func();
int main()
{
     int iret = func();
     bool bret = func();
}

这个问题总是在我脑海中浮现。希望得到满意的答复。

4

1 回答 1

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(); or double a = fn1();

在任何一种情况下,这两种定义都可能导致关于调用哪个定义的歧义。返回值存储在intdouble不影响确定要调用的 fn 的事实。该函数首先解析然后执行,然后分配返回值。

如果两者都没有返回类型,则调用只会fn1();使其模棱两可,无论是fn1()使用返回类型int还是调用double

于 2013-04-01T13:01:23.577 回答