C++⽀持在同⼀作⽤域中出现同名函数,但是要求这些同名函数的形参不同,可以是参数个数不同或者
类型不同。
参数类型不同
样例如下:
// 1、参数类型不同
int Add(int left, int right)
{
cout << "int Add(int left, int right)" << endl;
return left + right;
}
double Add(double left, double right)
{
cout << "double Add(double left, double right)" << endl;
return left + right;
}
参数个数不同
样例如下:
// 2、参数个数不同
void f()
{
cout << "f()" << endl;
}
void f(int a)
{
cout << "f(int a)" << endl;
}
参数类型顺序不同
样例如下:
// 3、参数类型顺序不同
void f(int a, char b)
{
cout << "f(int a,char b)" << endl;
}
void f(char b, int a)
{
cout << "f(char b, int a)" << endl;
}
不能构成函数重载的举例
返回值不同
当返回值不同的时候,我们在使用的时候无法识别出要使用哪一个函数,因为使用哦的时候仅仅是调用,不会显式的告诉编译器你要用哪个返回值的函数,所以返回值不同的函数不能构成重载。
// 返回值不同不能作为重载条件,因为调⽤时也⽆法区分
void fxx()
{}
int fxx()
{
return 0;
}
全缺省参数与无参函数
区别于构造函数,类外的全缺省参数函数与无参函数构成的函数重载无法正常调用,存在歧义。当调用时编译器不知道应该使用哪一个函数。
void f1()
{
cout << "f()" << endl;
}
void f1(int a = 10)
{
cout << "f(int a)" << endl;
}