|
在 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
|
|