函数重载如何使用double和float

Wal*_*eed 1 c++ overloading

我有两个重载方法

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

float Sum(float n1, float n2)
{
     return n1 + n2;
}
Run Code Online (Sandbox Code Playgroud)

当我调用Sum(5.5,5.5)时,调用具有双返回类型的方法.我的问题是为什么调用带有双返回类型的方法,为什么不使用float返回类型的方法.编译器如何决定应该调用哪个方法.

Oza*_*ver 6

因为,浮点文字如5.5具有式doubleC++为默认值.这就是为什么当你将双重文字传递给重载函数时,它会调用接受双重类型参数的函数版本.

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

  • 你需要使用后缀`f`,如`5.5f`让编译器知道它是一个浮点型文字. (5认同)