两个以上的函数,取同一个名字,只要使用不同类型的参数或参数个数不同,编译器便知道在什么情况下该调用哪个函数,这被称为函数重载。
为什么要引入函数重载,可以通过一个例子来说明。有三个函数:
·lsubtract() 整数相减。
·dsubtract() 实数相减。
·fsubtract() 浮点数相减。
若用C语言来处理,必须给三个函数规定三个不同的函数名。程序员使用这些函数完成两个变量之间的减法时,必须调用合适的函数,也就是说,程序员必须记忆的是三个函数,而不是一个函数。
在面向对象程序设计中,由于它支持重载,所以用C++Builder处理时,虽然给这三个函数取相同的名字subtract,但它们的参数类型是不同的。当程序员调用此函数时,只需要在其中带入实参,编译器就会根据实参类型来确定到底调用哪个重载函数。因此,记住subtract是将两个参量相减的函数,剩下的则是系统的事情。上述例子可以用下面的程序来实现。
[例1]重载函数的使用。
#include<iostream.h>
//定义两个整数相减
int subtract(int x,int y)
{
return x—y;
}
int subtract(float x,float y)
(
return x—Y;
)
//定义两个双精度数相减
int subtract(double x,double y)
{
return x—Y;
}
void main()
{
int i=36,J=10;
float xl=4.9,yl=1.5;
double x2=675.5,y2=35.7;
cout<<subtract(i,J)<<endl;
cout<<subtract(xl,y1)<<endl;
cout<<subtract(x2,y2)<<endl;
}
在main中的subtract函数的三次调用,实际上是调用三个不同的重载版本,由系统根据传递的不同参数类型来决定调用哪个重载版本。例如,subtract(i,j),因为i,J为整型变量,所以当执行到此处时,系统将调用两个整数相减的重载版本int subtract(int,int)。从上面可有看出,利用重载概念,程序员在调用函数时,书写非常方便。