LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 511|回复: 0

重载函数

[复制链接]
发表于 2024-2-20 23:09:05 | 显示全部楼层 |阅读模式
在 C++ 中,如果两个不同的函数的参数不同,则它们可以具有相同的名称;要么是因为它们具有不同数量的参数,要么是因为它们的任何参数都属于不同的类型。例如:

// overloading functions
#include <iostream>
using namespace std;

int operate (int a, int b)
{
  return (a*b);
}

double operate (double a, double b)
{
  return (a/b);
}

int main ()
{
  int x=5,y=2;
  double n=5.0,m=2.0;
  cout << operate (x,y) << '\n';
  cout << operate (n,m) << '\n';
  return 0;
}
10
2.5
在此示例中,有两个函数被调用,但其中一个具有两个 type 的参数,而另一个具有 类型的参数。编译器通过检查在调用函数时作为参数传递的类型,知道在每种情况下要调用哪一个。如果使用两个参数调用它,它将调用具有两个参数的函数,如果使用两个 s 调用它,则它调用具有两个 s 的函数。 在此示例中,两个函数具有完全不同的行为,版本将其参数相乘,而版本将其参数相除。

这通常不是一个好主意。通常期望两个具有相同名称的函数至少具有相似的行为,但此示例表明它们完全有可能不这样做。两个重载函数(即两个同名函数)具有完全不同的定义;出于所有目的,它们是不同的功能,只是恰好具有相同的名称。

请注意,函数不能仅按其返回类型重载。其至少一个参数必须具有不同的类型。operateintdoubleintintdoubledoubleintdouble

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表