C++ 函数重载

函数重载

函数重载允许多个函数拥有相同的名称,只要它们的参数在类型数量上不同即可:

实例

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

这让您可以为相似的任务使用相同的函数名。

没有函数重载的情况

考虑下面的例子,它有两个相加不同类型数字的函数:

实例

int plusFuncInt(int x, int y) {
  return x + y;
}

double plusFuncDouble(double x, double y) {
  return x + y;
}

int main() {
  int myNum1 = plusFuncInt(8, 5);
  double myNum2 = plusFuncDouble(4.3, 6.26);

  cout << "整数结果:" << myNum1 << "\n";
  cout << "双精度结果:" << myNum2;
  return 0;
}

亲自试一试

问题:我们不得不为相同的逻辑创建两个不同的函数名。

使用函数重载

与其定义两个功能相同的函数,不如重载其中一个函数。

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

实例

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 << "整数结果:" << myNum1 << "\n";
  cout << "双精度结果:" << myNum2;
  return 0;
}

亲自试一试

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

按参数数量进行函数重载

在这个例子中,我们通过使用不同数量的参数来重载一个函数:

实例

int plusFunc(int x, int y) {
  return x + y;
}

int plusFunc(int x, int y, int z) {
  return x + y + z;
}

int main() {
  int result1 = plusFunc(3, 7);
  int result2 = plusFunc(1, 2, 3);

  cout << "2 个数的和:" << result1 << "\n";
  cout << "3 个数的和:" << result2;
  return 0;
}

亲自试一试