为啥我不能通过返回类型重载函数? [复制]
Posted
技术标签:
【中文标题】为啥我不能通过返回类型重载函数? [复制]【英文标题】: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();
我的脑海中总是会出现这个问题。希望得到满意的答复。
【问题讨论】:
***.com/questions/442026/… 【参考方案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();
。
在任何一种情况下,这两个定义都可能导致关于调用哪个定义的歧义。
返回值存储在 int
或 double
中这一事实在确定要调用的 fn 时没有区别。函数先解析后执行,再赋值返回值。
如果两者都没有返回类型,则调用将只是 fn1();
使其模棱两可,无论是使用返回类型 int
还是 double
调用 fn1()
【讨论】:
以上是关于为啥我不能通过返回类型重载函数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章