函数重载如何使用double和float

时间:2019-01-08 11:05:08

标签: c++ overloading

我有两个重载方法

double Sum(double n1, double n2)
{
     return n1 + n2;
}

float Sum(float n1, float n2)
{
     return n1 + n2;
}

当我调用Sum(5.5,5.5)时,将调用具有双返回类型的方法。 我的问题是为什么调用具有双返回类型的方法,为什么不调用具有浮点返回类型的方法。编译器如何确定应调用哪个方法。

2 个答案:

答案 0 :(得分:5)

因为,像 5.5 这样的浮点文字在默认情况下在 C ++ 中具有类型double。这就是为什么在将 double文字传递给重载的函数时,它将调用该函数的版本,该版本接受double型参数。

如果要覆盖此默认行为,则需要使用后缀表示法,例如f,以使编译器知道文字具有哪种类型。例如,为了避免默认行为,您需要传递Sum(5.5f, 5.5f)而不是Sum(5.5, 5.5)

答案 1 :(得分:2)

因为在c ++中默认的浮点类型是double ...所以当您调用函数sum(5.5,5.5)...编译器将转到返回double类型的函数...如果要调用一个浮点函数,您应该在数字5.5 .....之后加上“ f”,例如sum(5.5f,5.5f)...,也可以将两个变量初始化为浮点类型,然后将它们作为参数发送给函数。 ...