C++ 中的函数重载
原文:https://www.studytonight.com/cpp/function-overloading.php
如果任何类有多个同名但不同参数的函数,那么它们就被称为重载。函数重载允许您对不同的函数使用相同的名称,以在同一个类中执行相同或不同的函数。
函数重载通常用于增强程序的可读性。如果您必须执行一个操作,但参数的数量或类型不同,那么您可以简单地重载该函数。
控制一个函数的不同方法
- 通过更改参数数量。
- 通过不同类型的争论。
函数重载:不同数量的参数
在这种类型的函数重载中,我们定义了两个名称相同但相同类型的参数数量不同的函数。例如,在下面提到的程序中,我们做了两个 sum()函数来返回两个和三个整数的和。
// first definition
int sum (int x, int y)
{
cout << x+y;
}
// second overloaded defintion
int sum(int x, int y, int z)
{
cout << x+y+z;
}
这里sum()
函数被称为重载函数,因为它有两个定义,一个接受两个参数,另一个接受三个参数。将调用哪个sum()
函数,取决于参数的数量。
int main()
{
// sum() with 2 parameter will be called
sum (10, 20);
//sum() with 3 parameter will be called
sum(10, 20, 30);
}
30 60
函数重载:参数的不同数据类型
在这种类型的重载中,我们定义了两个或多个具有相同名称和相同数量参数的函数,但是参数的类型是不同的。例如,在这个程序中,我们有两个 sum()函数,第一个得到两个整数参数,第二个得到两个双参数。
// first definition
int sum(int x, int y)
{
cout<< x+y;
}
// second overloaded defintion
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); // This is Incorrect
如果你默认一个参数,那么你必须默认其后的所有参数。
sum (int x,int y=0); sum (int x,int y=0,int z); // This is incorrect sum (int x,int y=10,int z=10); // Correct
您可以给任何值一个默认值作为参数,与它的数据类型兼容。
带有占位符参数的函数
当函数中的参数在没有任何标识符的情况下声明时,它们被称为占位符参数。
void sum (int, int);
此类参数也可以与默认参数一起使用。
void sum (int, int=0);