【问题标题】:Why can't I overload a function by its return type? [duplicate]为什么我不能通过返回类型重载函数? [复制]
【发布时间】:2013-03-22 13:10:49
【问题描述】:

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

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

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

【问题讨论】:

标签: oop overloading


【解决方案1】:

类似的函数

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(); 使其模棱两可,无论是使用返回类型 int 还是 double 调用 fn1()

【讨论】:

    猜你喜欢
    • 2011-05-18
    • 2015-12-13
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    • 2022-01-13
    • 2015-11-14
    • 2017-08-28
    • 1970-01-01
    相关资源
    最近更新 更多