在自然语言中,一个词可以代表多种不同的含义,需要依赖上下文来确定。这就是所谓的一次多意。反映到程序中就是重载。
比如,我们说“开车”时,针对不同的车的类型(自行车、小汽车),但是所使用的方法截然不同。同样,在编程中我们可以对不同的功能赋予相同的函数名,编译时会根据上下文(实参的类型和个数)来确定使用的是哪一具体功能。
1、函数重载的定义
两个以上的函数,具有相同的函数名,但是形参的个数或者类型不同,编译器会根据实参和形参的类型以及个数的最佳匹配,自动确定调用哪一个函数,这就是函数的重载。
2、为什么要使用函数重载?
如果没有重载,那么对不同类型的数据进行相同的操作也需要定义名称完全不同的函数,例如定义加法函数,就必须对整数的加法和浮点数的加法使用不同的函数名:
int iadd(int x, int y);
float fadd(float x, float y);
这在调用时十分不方便。
所以C++允许功能相近的函数使用相同的函数名,方便使用,易于记忆。
int add(int x, int y);
int add(float x, float y);
int add(int x, int y, int z);
3、注意:
1)重载函数的形参必须不同,要么是形参类型不同,要么是形参个数不同。
2)如果函数名相同,形参类型也相同,只是返回值类型不同,编译时会认为语法错误(函数重复定义)。