自己在家看C++在函数重载方面遇到了一个问题,求指教!!!!!!!!!!
#include<iostream>
using namespace std;
int add(int ,int );
float add(float,float);//double add(double,double);
void main ()
{
cout<<add(5,10)<<endl;
cout<<add(5.0,10.0)<<endl;
}
int add(int x,int y)
{
return x+y;
}
float add(float x,float y)//double add(double,double)
{
return x+y;
}
当我在VC++6.0中编译以上程序时报错“ambiguous call overloaded function”。
有书中解释说是由于数字本身并没有类型,所以在执行add(5,10);一句时,将数字5还有10
当做函数参数时,编译器会对其自动进行类型转换(称作隐式类型转换),编译器无法决定将
5以及10转换成int型还是float型,调用产生歧义,编译器无法决定执行那个add函数。
但是当我把第4行还有第14行改成注释中的内容之后,却能正确的编译运行通过。
求大神指条明路这是为什么?隐式转换的规则是怎样的?(ps本人穷学生一个,在csdn上注册没多久没有多少分能给......) c++ 编译器
[解决办法]
你原来的版本要用add(0.5f, 10.0f)
[解决办法]