重载函数问题
#include <iostream>using namespace std;
void print(int i)
{
cout<<"print(int x)"<<endl;
}
void print(float i) //换成double 就没两义性了,请说下定义或原理,不要摘抄谢谢。
{
cout<<"print(float x)"<<endl;
}
int main()
{
print(3.14);//为什么出现两义性
return 0;
}
因为3.14编译器认为是double类型
double类型既可以转换为float也可以转换为int,所以编译器抛出错误。
(不过貌似转换为float更匹配,不知为何还是会异常)
print((float)3.14)是没问题的。
页:
[1]