函数重载定义:
两个函数(不带默认值)共用一个函数名,但形参个数或类型不同,
编译器根据形参与实参的类型或个数的最佳匹配,自动确定调用函数。
(1)传统c语言中:同一作用域内,函数名必须唯一,不允许出现同名的函数
(特别在类的成员函数中,成员函数的名称与类的函数名要区分开来)。
(2)c++:用户可以函数重载,同一作用域内,函数参数的类型不同,或参数的个数不同,或者两者都不同
可以有俩个或俩个以上函数使用相同的函数名
但是,如果参数个数相同且参数类型相同,只是返回的类型不同,不允许重载。
如:int a(int x); 和 double a(int x);
(3)函数的重载与带默认值的函数一起使用时,会有二义性。
如:void b(int m=0, int n=1); 和 void b(int m);
(4)函数调用时,给出的形参与实参类型不相同,
c++编译器会自动做类型转化,成功但可能发生不可识别的错误。
如:void f(int x); 和 void f(long x);
上述俩个函数满足重载的要求,参数的类型不同,但调用下面函数,会有错误
int c=f(4.3);
编译器无法确定将4.3转化成int,还是long。
代码:
#include<iostream>
using namespace std;
void A(int m){
cout<<m<<endl;
}
void A(int m, int n){
cout<<m<<" "<<n<<endl;
}
int B(int x){
cout<<x*x<<endl;
}
double B(double x){
cout<<x*x<<endl;
}
int main()
{
A(2);
A(2,3);
int i=2;
double d=2.2;
B(i);
B(d);
return 0;
}