C++函数重载

1、函数重载的由来:
在平时的编程过程中,一个函数可能就实现一个功能,多个功能就需要多个函数。但有时候多个功能之间很像,只是一些细节有差异,那么类似这样的功能能不能写成一个函数呢?例如,要求2个数中比较大的数,这两个数的类型有时候是int类型,有时候是float类型,那么我们按照之前的写法应该是这样封装函数:

int max_int(int a, int b);
float max_float(float a, float b);

所以,用户在调用的时候就要根据不同的参数类型,调用不同名字的函数,如果要求两个int类型的数中的比较大的就要调用 max_int,如果要求两个float类型的数中的比较大的就要调用 max_float,能不能叫一个名字呢?让系统自己去适配到底调用哪个?答案是可以的。例如:

int max_num(int a, int b);
float max_num(float a, float b);

实际上这就是函数的重载。
C++允许同一函数名定义多个函数,这些函数的参数类型和个数可以不相同,而且至少要有一个不相同,如果都相同的话就会报重复定义的链接错误了。使一个函数名可以多用。

2、函数重载的要求:
重载函数的参数个数、参数类型、参数顺序 三者中必须至少有一种不同(不然会产生调用疑惑)。函数的返回值类型可以相同也可以不同。
单纯返回值类型不同的两个同名函数不能构成函数重载,会报链接错误。

举个例子:

int max_num(int a, int b);
bool max_num(int a, int b);
float max_num(float a, float b);

这样就不行,int max_num(int a, int b); 和 bool max_num(int a, int b); 不满足条件,只有返回值类型不同。这样会导致系统不知道调用哪一个。编译直接报错。

例如:max_num(22,33);你知道调用的是bool类型的函数还是int类型的函数?

穷则独善其身,达则兼济天下……
原文地址:https://www.cnblogs.com/hmy-666/p/14413275.html