函数重载中的int和float

int and float in function overloading

本文关键字:float int 重载 函数      更新时间:2023-10-16

我有两个重载函数,如下所示:

void print(int i) { ... }
void print(float f) { ... }

它给了我这个print(1.2);:的错误

error: call of overloaded 'print(double)' is ambiguous 

有人能解释一下为什么吗?

1.2是一个双文本,而不是浮点。

因此编译器需要明确的歧义消除。

1.2f会起作用,因为它是一个浮点文字。

1.2是一个double文字,这使得您试图调用的函数不明确——double可以很容易地被截断为floatint。使用float文字(1.2f)或显式强制转换它可以解决问题。

它将1.2解释为双精度。把它铸造成浮子就能解决问题。

打印(浮动(1.2));