C++ 函数重载的工作原理 intadd(inta,intb) { cout

C++ 函数重载的工作原理 intadd(inta,intb) { cout,c++,C++,存在从char到int的隐式转换。更多信息: 隐式转换是: 最接近的匹配是带有int和char的匹配。因为char可以隐式转换为int,所以它仍然有效 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() {

存在从char到int的隐式转换。更多信息:

隐式转换是:


最接近的匹配是带有int和char的匹配。因为char可以隐式转换为int,所以它仍然有效

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 
 }

如果一个函数的所有参数转换至少与另一个函数的参数转换一样好,并且某些参数转换得更好,则采用该函数


如果不是所有参数的转换至少与另一个函数的转换一样好,并且后一个函数的所有参数的转换至少与前一个函数的转换一样好,那么在普通函数的正常情况下就会产生歧义。

c++是弱类型的。编译器将尽最大努力使代码无错误地工作,因此在本例中,它会自动将字符输入转换为int.@Kapura,这不是弱类型的意思。我将其命名为“数值”,因为ASCII不是给定的。
int a = 'a'; // Returns the ascii value for 'a'.