我有两个重载方法
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返回类型的方法.编译器如何决定应该调用哪个方法.
因为,浮点文字如5.5具有式double在C++为默认值.这就是为什么当你将双重文字传递给重载函数时,它会调用接受双重类型参数的函数版本.
如果要覆盖此默认行为,则需要使用后缀表示法,例如f让编译器知道文字具有哪种类型.例如,您需要传递Sum(5.5f, 5.5f)而不是Sum(5.5, 5.5)避免默认行为.
| 归档时间: |
|
| 查看次数: |
188 次 |
| 最近记录: |