为什么我不能通过返回类型重载函数?

时间:2013-04-01 12:49:43

标签: oop overloading

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

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

在我的脑海里总会出现这个问题。希望得到满意的答案。

1 个答案:

答案 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();

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

如果两者都没有返回类型,则调用只是fn1();使其不明确,是否使用返回类型fn1()int来调用double