Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 为什么可以';I是否按返回类型重载函数?_Oop_Overloading - Fatal编程技术网

Oop 为什么可以';I是否按返回类型重载函数?

Oop 为什么可以';I是否按返回类型重载函数?,oop,overloading,Oop,Overloading,为什么不能函数不被其返回类型重载,不应该有支持这种重载的语言。我想知道如果它允许的话会发生什么,或者为什么它不允许通过返回类型重载函数 int func(); bool func(); int main() { int iret = func(); bool bret = func(); } 我总是想起这个问题。希望得到满意的答案。像这样的函数 double function fn1() { int a = 2; return a; } 在上面的例子中,a在返回时将隐

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

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

int function fn1()
{

double a = 2;
return a;

}
此fn的fn调用类似于
inta=fn1()
双a=fn1()

在任何一种情况下,这两种定义都可能导致调用哪种定义的歧义。 返回值存储在
int
double
中,这一事实在确定要调用的fn时没有什么区别。首先解析并执行函数,然后分配返回值

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