C++从零开始学(视频教学版)(第2版)
上QQ阅读APP看书,第一时间看更新

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,它们是通过参数的类型或个数来内部重命名的,关于这个程序员不需要去了解,这里只是为了解释大家心中的疑问而已。