Mai*_*eer 1 c++ floating-point overloading function
我的程序有两个打印功能:一个用于int,一个用于float.
void print(float a){
cout << "float:" << a << endl;
}
void print(int a){
cout << "integer:" << a << endl;
}
Run Code Online (Sandbox Code Playgroud)
每当我调用print(10)或调用数据类型的print(0)那个时int.但是当我尝试调用时print(3.5),它会产生编译错误.为什么会这样?
PS当我只有一个print功能void print(float a)然后print(3.5)工作正常.
注意3.5是a double,而不是a float.并且它可以转换为两者float并且int隐式地,调用变得模糊(floatwith int).
请参阅浮点文字.
后缀,如果存在,是一个
f,F,l,或L.后缀确定浮点文字的类型:Run Code Online (Sandbox Code Playgroud)(no suffix) defines double f F defines float l L defines long double
因此,您可以通过调用它print(3.5f);来避免歧义.
BTW:double可以float隐式转换,这就是为什么如果你只有一个函数那么它运行良好.