在重载时为什么不考虑函数的返回类型?

tus*_*h1r 1 .net c# c++ oop

可能重复:
返回类型的函数重载?

嗨,

在重载时我们说参数列表必须按数字或类型不同,但在返回类型上无关紧要,为什么这样呢?

功能

//Function 1
int Add(int a, int b)
{return a+b;}

//Function 2
Double Add(Double a, Double b)
{return a+b;}

//Function 3
Double Add(int a, int b)
{return (Double)a+b;}
Run Code Online (Sandbox Code Playgroud)

函数1 2是重载的,其中函数1和3不是??? 原因???

任何帮助都非常感谢.

Hei*_*nzi 9

编译器需要在编译时知道您要调用哪个函数.如果它们仅因返回类型而不同,则通常不可能.例如,考虑一下:

var result = Add(1, 2);
Run Code Online (Sandbox Code Playgroud)

要么

Console.WriteLine(Add(1, 2));
Run Code Online (Sandbox Code Playgroud)

编译器无法知道您是否要执行函数1或3.即使您这样做了

double x = Add(1, 2);
Run Code Online (Sandbox Code Playgroud)

编译器不会知道你是否(a)想要调用函数3或(b)调用函数1并进行从int到double的隐式扩展转换.