6.6 函数的重载
函数重载用来描述同名函数具有相同或者相似的功能,但数据类型或者参数不同。
在同一作用域内,可以有一组具有相同函数名、不同参数列表的函数,这组函数称为重载函数。
重载函数通常用来命名一组功能相似的函数,这样做减少了函数名的数量,避免了名字空间的污染,对于程序的可读性有很大的好处。
提示
不要将不同功能的函数定义为重载函数,以免出现对调用结果的误解。
要进行函数重载,必须遵循以下规则。
(1)同名函数的参数必须不同,不同之处可以是参数的类型或参数的个数。
(2)通过参数类型的匹配,程序决定使用哪一个同名函数。
(3)必须附加考虑参数的默认值对函数重载的影响。
下面通过一个实例来说明如何进行函数重载。
【实例6-11】函数重载(代码6-11.txt)
新建名为“cztest”的【C++ Source File】源程序,源代码如下所示:
【代码详解】
在该例中,首先声明了两个同名函数test,两个函数的参数类型分别是int和float,它们的输出类型也分别是int和float;然后在主程序中,输出调用test(1,2)的值,接着输出调用test(2.1f,3.14f)的值;接下来实现test,该函数输入参数和输出类型都是int,功能是将两个int型的参数相加,返回结果;接下来实现另一个test,该函数输入参数和输出类型都是float,功能是将两个float型的参数相加,返回结果。
运行结果如图6-12所示。
图6-12 代码运行结果
【实例分析】
在上面的程序中同样使用了两个名为test的函数来描述int类型及操作和float类型及操作,这样一来就方便了程序员对相同或者相似功能函数的管理。
看了上面的解释很多人会问,这样一来计算机该如何判断同名称函数呢?操作的时候会不会造成选择错误呢?回答是否定的。C++内部利用一种叫作名称粉碎的机制来内部重命名同名函数,上面的例子在计算重命名后可能会是testii和testff,它们是通过参数的类型或个数来内部重命名的,关于这个程序员不需要去了解,这里只是为了解释大家心中的疑问而已。