有了C++语言,你就可以重载函数和运算符。重载是一种应用,它在同一范围中为一个给定函数名称提供了多种定义。委托编译器依据调用该函数的参量选择合适的函数或运算符的版本。例如:
double max(double d1,double d2)
{
return (di>d2) d1:d2;
}
int max (int e1,int e2)
{
return (e1>e2) e1:e2;
}
作为一个重载函数,函数max在程序中使用如下:
main()
{
int e=nax(12,8);
double d=max(123.4,12.3);
return e+(int)d;
}
在第一个例子中,要求出两个整型变量的最大值,故调用函数(int,int)。然而,在第二种情况下,两个参量是浮点型,因此调用的函数是max(double,double)。
重载函数之间的区别在于带有不同初始值的参量类型。因而对一个给定类型的参量以及对于该类型的引用,在重载的意义上来说是完全相同的。它们被看成是相同的,因为它们采用了相同的初始值。例如:max(double,double)和(double&,double &)是完全相同的,说明两个这样的函数会引起错误。出于相同的原因,用修饰符const和volatile进行修饰的函数参量类型同基本类型,在重载的意义上看没有什么不同。然而重载函数的机制可以区分由const或volatile修饰的引用以及基本类型的引用。指向const和volatile对象的指针和指向其基本类型的指针在重载意义上是不同的。