“函数重载”指的是可以有多个同名的函数,因此名称进行了重载。这两个术语指的是同一回事,但我们通常使用函数重载。可以通过函数重载来设计系列函数——它们完成相同的工作,但使用不同的参数列表。
重载函数就像是有多种含义的动词。例如,Piggy小姐可以在棒球场为家乡球队助威(root),也可以在地里种植(root)菌类作物。根据上下文可以知道在每一种情况下,root的含义是什么。同样,C++使用上下文来确定要使用的重载函数版本。
函数重载的关键是函数的参数列表——也称为函数特征标(ftmctionsignature).如果两个函数的参数数目和类型相同,同时参数的排列顺序也相同,则它们的特征标相同,而变量名是无关紧要的。C++允定义名称相同的函数,条件是它们的特征标不同。如果参数数目和/或参数类型不同,则特征标也不同。例如,可以定义一组原型如下的print()函数:
Voidprint(constchar*str,intwidth);//#1
Voidprint(doubled,intwidth);//#2
Voidprint(long1,intwidth);//#3
Voidprint(inti,intwidth);//#4frombyte
Voidprint(constchar*str);//#5
使用pnnt()函数时,编译器将根据所采取的用法使用有相应特征标的原型:
print(”Pancakes,15);//use#1
print(”syrup);//use#2
print(”.0,10);//use#3
print(”,12);//use#4
print(”L,15);//use#5frombyte.