重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个函数完成不同的功能。这就是重载函数。重载函数常用来实现功能类似而所处理的数据类型不同的问题。不能只有函数返回值类型不同。本文主要介绍C++ 函数重载。

1、函数重载

在函数重载的情况下,多个函数可以有相同的名称,但参数不同:

例如,

int myFunction(int x)
float myFunction(float x)
double myFunction(double x, double y)

两个函数可以添加不同类型的参数:

例如,

#include <iostream>
using namespace std;
int plusFuncInt(int x, int y) {
  return x + y;
}
double plusFuncDouble(double x, double y) {
  return x + y;
}
int main() {
  int myNum1 = plusFuncInt(7, 4);
  double myNum2 = plusFuncDouble(4.2, 3.11);
  cout << "Int: " << myNum1 << "\n";
  cout << "Double: " << myNum2;
  return 0;
}

与其定义两个应该做同样事情的函数,不如重载一个函数。

在下面的例子中,重载plusFunc函数,使其同时适用于intdouble:

例如,

#include <iostream>
using namespace std;
int plusFunc(int x, int y) {
  return x + y;
}
double plusFunc(double x, double y) {
  return x + y;
}
int main() {
  int myNum1 = plusFunc(8, 5);
  double myNum2 = plusFunc(4.3, 6.26);
  cout << "Int: " << myNum1 << "\n";
  cout << "Double: " << myNum2;
  return 0;
}

注意:多个函数可以有相同的名称,只要参数的数目和/或类型不同。

2、函数重载的规则

1)函数名称必须相同。

2)参数列表必须不同(个数不同、类型不同、参数排列顺序不同等)。

3)函数的返回类型可以相同也可以不相同。

4)仅仅返回类型不同不足以成为函数的重载。

3、函数重载的作用

重载函数通常用来在同一个作用域内 用同一个函数名 命名一组功能相似的函数,这样做减少了函数名的数量,避免了名字空间的污染,对于程序的可读性有很大的好处。

推荐文档