我有两个重载方法
double Sum(double n1, double n2)
{
return n1 + n2;
}
float Sum(float n1, float n2)
{
return n1 + n2;
}
当我调用Sum(5.5,5.5)时,将调用具有双返回类型的方法。 我的问题是为什么调用具有双返回类型的方法,为什么不调用具有浮点返回类型的方法。编译器如何确定应调用哪个方法。
答案 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)...,也可以将两个变量初始化为浮点类型,然后将它们作为参数发送给函数。 ...