#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++教程频道。










