函数重载如何工作

时间:2012-09-20 17:41:08

标签: c++

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)。 任何人都可以解释原因。

3 个答案:

答案 0 :(得分:5)

答案 1 :(得分:1)

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

如果并非所有参数都至少与另一个函数的参数转换,并且后一个函数的所有参数都不能转换为前一个函数的参数,那么普通情况下的普通情况就会出现歧义。功能

答案 2 :(得分:0)

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

int a = 'a'; // Returns the ascii value for 'a'.
相关问题