一、函数的默认参数
函数的默认参数是一种允许在声明函数时为其参数提供默认值的机制。当调用函数时,如果实参没有提供对应的值,则默认使用给定的默认值。
int func(int a, int b = 10, int c=10)
{
return a + b + c;
}
int main()
{
cout << func(10,20,10) << endl;//输出40
return 0;
}
注意事项
- 如果某个参数有默认值,那么自这个参数之后,从左至右,都必须有默认值
int func(int a, int b = 10, int c)
{
return a + b + c;
}
//这样是不允许的
int func(int a, int b = 10, int c=10)
{
return a + b + c;
}
//这样是正确的
- 如果函数的声明有默认值,那么函数的定义就不能有默认值
int func(int a=20,int b=10);
int func(int a=20;int b=10)
{
return a+b;
}
//这样是不允许的
int func(int a = 10, int b = 10);
int func(int a, int b)
{
return a + b;
}
//这样是正确的
总结:
函数的默认参数是一种方便而实用的机制,可以使函数更易于使用。在编写 C++ 函数时,可以考虑使用默认参数来简化函数接口。
二、函数的占位参数
c++中函数的形参列表里可以有占位参数,用来做占位,调用函数时必须填补该位置,如果有默认值则不需要填补
语法:返回值类型 函数名(数据类型){ }
int func(int a,int)
{
return a;
}
int main()
{
cout << func(10,20) << endl;
return 0;
}
没有默认值,调用时需传值
int func(int a,int=20)
{
return a;
}
int main()
{
cout << func(10) << endl;
return 0;
}
占位参数有默认值,则在调用时不需要传值
三、函数重载
函数重载是 C++ 中一种允许在同一作用域内声明多个函数具有相同的名称但具有不同参数列表的机制。
函数重载的实现原理(满足条件)
- 相同作用域
- 函数名称相同
- 参数列表不同,即参数个数不同、或参数类型不同、或参数顺序不同
此外
函数的返回值不可以作为函数重载的条件
举例
int add(int a, int b) {
return a + b;
}
double add(double a, double b) {
return a + b;
}
float add(float a, float b, float c) {
return a + b + c;
}
在上面的例子中,add
函数被重载了三次,每次使用不同的参数。第一个函数将两个整数相加并返回结果,第二个函数将两个双精度数相加并返回结果,第三个函数将三个浮点数相加并返回结果。
当调用 add 函数时,编译器将根据传递给函数的参数类型和数量来决定调用哪个版本的函数。例如:
int result1 = add(1, 2); // 调用第一个函数
double result2 = add(3.5, 2.5); // 调用第二个函数
float result3 = add(1.0f, 2.0f, 3.0f); // 调用第三个函数
需要注意的是,在重载函数时,返回值类型不能用来区分重载版本。必须在参数列表中使用不同的参数类型或不同的参数数量来区分各个版本。
总之,函数重载是一种强大的机制,它允许在同一作用域内声明多个函数具有相同的名称,但具有不同的参数列表。函数重载使函数更灵活,更易于使用,并支持同名但不同实现的函数。在编写 C++ 代码时,可以考虑使用函数重载来增强代码的复用性和可读性。