2.6.8 函数重载

2013-10-07 15:29:18 · 作者: · 浏览: 70

2.6.8   函数重载

如果能够通过参数个数和类型进行区别,C++(www.cppentry.com)允许在同一范围内使用相同名字的函数。如果有多个名为f的函数被定义,就称f被重载(Overload)。编译器通过将实参类型与同名函数的参数表进行匹配,以决定应该调用哪个函数。检测最匹配函数的精确规则是很复杂的,但完全匹配总是最匹配的。

例2-57

程序清单2-4中的程序重载了函数print。当语句


 

被调用,因为实参类型是double。

程序清单2-4   重载print函数

 

例2-58

数学函数sqrt被重载,用来支持三种不同的浮点数据类型:

 

如果传递的实参为float类型,将返回一个float类型的方根值。如果传递的实参为double类型,将返回一个double类型的方根值。如果传递的实参为long double类型,将返回一个long double类型的方根值。其他数学函数也能以相同的方式重载。

重载函数(Overloading function)通常用来对具有相似行为而数据类型不同的操作提供一个通用的名称。在例2-57中,print是一个通用的名字,用来体现对不同类型操作数的近似操作。从用户的观点看来,这只是一个简单的函数print,却能对不同的数据类型进行打印。