函数重载二义性一方面由C++隐式转换引起的,是由另一方面由缺省参数引起。
例:
#include <iostream>
using namespace std;
void F(int a);
void F(int a,float b=1.1);
void Foo(int a);
void Foo(float b);
void main()
{
F(1,2);
F(1);//error 缺省参数
Foo(0.5);//error 隐式转换
Foo(int(0.5));
Foo(float(0.5));
}
如果在程序中涉及到函数重载,相同位置上的参数如果是char,short,int,long,unsigned short,unsigned int,unsigned long,unsigned char,那么可能会引起二义性,应该多加注意,在调用函数的地方一定要进行显示的类型转换