C++深入学习之彻底理清重载函数匹配

2020-01-06 20:16:34于丽


#include<iostream>
using namespace std;
//函数1
void f(double a,int b)
{
 cout<<"function 1"<<endl;
}
//函数2
void f(int a,double b)
{
 cout<<"function 2"<<endl;
}
int main()
{
 f(1,1);
 return 0;
}

函数1和函数2都是可行函数,但它们都没有在任意一个参数上比对方更好,因此将会产生二义性,编译时将会报错:

error: call of overloaded ‘f(int, int)' is ambiguous

总结

  • 调用重载函数时,应当避免强制类型转换。
  • 设计重载函数时应避免可能产生的二义性。
  • 如果无法找到可行函数,编译器将报错。
  • 设计重载函数的时候,希望避免需要用到上面的知识,而在定位问题时能够利用上面的知识很快定位问题。

    好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对ASPKU的支持。


    注:相关教程知识阅读请移步到C++教程频道。