int add(int a,int b)
{
cout<<"1"<<endl;
return a+b;
}
int add(int a,char c)
{
cout<<"2"<<endl;
return a+c;
}
int main()
{
cout<<add(10,20)<<endl; //1
cout<<add(10,'a')<<endl; //2
cout<<add('a','b')<<endl; //3
}
在上面的代码中第一个函数调用函数add(int,int),第二个函数调用函数add(int,char)。 第三个函数调用应该导致错误,但它调用函数add(int,char)。 任何人都可以解释为什么。函数过载如何工作
C++是弱类型的。编译器将尽最大努力使代码无误地工作,因此在这种情况下,它会自动将char输入转换为int。 – Kapura
@卡普拉这不是什么弱类型的手段。 – asawyer