函数重载是对两个或多个函数使用同样的函数名的过程。函数的参数个数,类型,或序列称为“函数特征”。当有同样名字的多个函数时,编译器根据函数的参数特征识别出此函数。
例;
1, void add(int);
void add(int,float); 这里,两个名为add()的函数是不同的,因为他们的参数的个数特征是不同的。
2,void display(int);
void display(float); 这里的两个名为display()的函数是不同的,因为他们的数据类型特征是不同的。
3,void display(int,char);
void display(char,int); 这里的两个名为display()的函数是不同的,因为他们的数据类型的次序特征不同。
4,void display();
char display(); 函数返回值的数据类型,不是函数特征的一部分,所以这两个声明不能出现在同一个类中。
给一个实例看看
#include<iostream>
using namespace std;
class a
{
public:
void max(int,int);
void max(float,float);
}
void a::max(int num1,int num2)
{
int max;
if(num1>num2) max=num1;
else max=num2;
cout<<"num1和num2中的最大数是"<<max<<endl;
}
void a::max(float num1,float num2)
{
float max;
if(num1>num2) max=num1;
else max=num2;
cout<<"num1和num2中最大的数是"<<max<<endl;
}
void main()
{
a b;
b.max(100,200);
b.max(12.3F,22.5F);
}
上面的程序中是用了同名的max()函数,函数参数个数相同但是类型不同,在调用时编译器根据所给的参数类型来分辨调用哪个函数。
用函数重载使程序员不必记住多个函数名,只要记住一个函数名max(),就可以传递不同数据类型的参数。