Anonymous 发表于 2014-5-20 16:48:59

重载函数问题

#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;
}

AepKill 发表于 2014-5-20 16:49:00

因为3.14编译器认为是double类型
double类型既可以转换为float也可以转换为int,所以编译器抛出错误。
(不过貌似转换为float更匹配,不知为何还是会异常)
print((float)3.14)是没问题的。
页: [1]
查看完整版本: 重载函数问题