[英]Confusion in function overloading in c++
我的程序有两个打印功能:一个用于int
,一个用于float
。
void print(float a){
cout << "float:" << a << endl;
}
void print(int a){
cout << "integer:" << a << endl;
}
每当我调用print(10)
或print(0)
,都会调用int
数据类型。 但是,当我尝试调用print(3.5)
,会出现编译错误。 为什么会这样呢?
PS,当我只有一个print
功能时, void print(float a)
那么print(3.5)
可以正常工作。
注意3.5
是一个double
float
,而不是float
。 而且它可以隐式转换为float
和int
,调用变得不明确( float
with int
)。
请参见浮点文字 。
后缀(如果存在)是
f
,F
,l
或L
。 后缀确定浮点文字的类型:(no suffix) defines double f F defines float l L defines long double
因此,您可以通过print(3.5f);
来调用它print(3.5f);
避免歧义。
顺便说一句: double
可以隐式转换为float
,这就是为什么如果您只有一个函数,那么它会很好地工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.