引例
我们在C语言里面写add函数的时候,只能支持一种类型的相加,除非我们创建多个add函数:
但是这样写并不方便,于是就有了c++的函数重载。
函数重载
函数重载就是可以将多个参数类型、顺序、数量不同,实现逻辑相同的函数集成一个函数名相同的整体叫做函数的重载。编译器会通过参数的不同来调用不同的函数
例如我们以add函数来示范:
通过以上代码就完成了add函数的重载。
那么我们就可以实现只调用一个函数名来实现几个函数的使用。
可以函数重载的几种情况
变量类型不同
上面的add函数就是变量类型不同的函数重载
变量顺序不同
下面这种情况就是变量顺序的不同产生的重载
变量数量不同
下面这种就是变量数量的不同产生的重载
不能重载的情况
只是返回值不同不能形成重载
我们也可以这样理解,我们调用一个这种重载的函数后,是使用哪种变量来接受它的返回值呢?
无法确定,所以这种重载不存在。
模糊不清的重载
我们知道缺省参数是可以不传参的,那么下面的两个重载函数就有了矛盾
当我们调用fun(),我们到底是调用没有参数的fun函数,还是调用没有传值的缺省参数的函数fun呢?
显然是有矛盾的,所以这种情况是错误的,虽然他的确是重载,但是有逻辑冲突。编译时是会报错的。
重载的作用
重载能让我们简化函数,将几个功能相同的函数结合起来。既让程序员免去函数命名的麻烦,让代码更简洁,可读性更好,也让程序员在调用这类函数时只要记住一个函数。