如果一个类有多个同名但参数不同的函数,则称它们为重载,函数 重载可以让你为不同的函数使用相同的名称。
函数重载通常用于增强程序的可读性,比如你想通过传递不同数量或类型的参数来执行同一个功能,这时你应该使用重载函数。
在这种类型的函数重载中,我们定义了两个具有相同名称但相参数数量不同的函数,例如,在下面的示例中,我们创建了两个 sum() 函数来返回两个和三个整数的和。
// 第一个函数
int sum (int x, int y)
{
cout << x+y;
}
// 第二个重载函数
int sum(int x, int y, int z)
{
cout << x+y+z;
}
这里的 sum()
函数被称为重载,因为它有两个定义,一个接受两个参数,另一个接受三个参数,调用哪个 sum()
函数,取决于参数的数量。
int main()
{
// 2个参数的sum()被调用
sum (10, 20);
//3个参数的sum()被调用
sum(10, 20, 30);
}
以上实例输出结果:
30 60
在这种类型的重载中,我们定义了两个或多个具有相同名称和相同数量参数的函数,但参数的类型不同,例如在下面这个示例中,我们有两个 sum() 函数,第一个传递两个整数参数,第二个传递两个浮点型参数。
// 第一个函数
int sum(int x, int y)
{
cout<< x+y;
}
// 第二个重载函数
double sum(double x, double y)
{
cout << x+y;
}
int main()
{
sum (10,20);
sum(10.5,20.5);
}
以上实例输出结果:
30 31.0
当我们在声明函数时直接定义了参数的默认值,它被称为默认参数,在这种情况下,即使我们调用该函数时没有传递任何参数,该函数也将会有默认值。
sum(int x, int y=0)
{
cout << x+y;
}
在这里,我们在函数定义期间为 y 提供了一个默认值。
int main()
{
sum(10);
sum(10,0);
sum(10,10);
}
以上实例输出结果:
10 10 20
前两个函数调用将产生完全相同的值。
对于第三个函数调用,y 将取 10 作为值,输出将变为 20。
通过设置默认参数,我们也重载了函数,默认参数还允许你在不同情况下使用相同的函数,就像函数重载一样。
sum (int x,int y);
sum (int x,int y=0);
sum (int x=0,int y); // 这会报错
sum (int x,int y=0);
sum (int x,int y=0,int z); // 报错
sum (int x,int y=10,int z=10); // 正确
函数中的参数在声明时可以没有变量名,它们被称为占位符参数,如下:
void sum (int, int);
此类参数也可以与默认参数一起使用。
void sum (int, int=0);