- 函数默认参数
- 函数占位参数
- 函数重载
- 函数重载概述
- 函数重载的注意事项
在C++中,函数的形参列表是可以有默认值的。
语法:返回值类型 函数名 (参数 = 默认值){}
示例:
#include函数占位参数using namespace std; //1.如果某个位置参数有默认值,那么从这个位置往后,从左向右,必须都要有默认值 int func(int a, int b = 10, int c = 10) { return a + b + c; } // 2.如果函数声明有默认值,函数实现的时候就不能有默认参数 int func2(int a = 10, int b = 10); int func2(int a, int b) { return a + b; } int main() { cout << "ret = " << func(20, 20) << endl;//50 cout << "ret = " << func(20) << endl;//40 return 0; }
C++函数的形参列表里可以有占位参数,用来做占位的,调用函数时必须填补该位置
语法:返回值类型 函数名 (数据类型){}
示例:
//函数占位参数,占位参数也可以有默认参数
void func(int a, int)
{
cout << "this is func" << endl;
}
int main()
{
func(10, 10);//占位参数必须填补
return 0;
}
函数重载
函数重载概述
作用:函数名相同,提高了复用性
函数重载需要满足的条件:
- 同一个作用域下
- 函数名称相同
- 函数参数的类型不同或者个数不同或者顺序不同
**注意:**函数的返回值不可以作为函数重载的条件
示例:
//函数重载需要函数在同一个作用域下
void func()
{
cout << "func 的调用" << endl;
}
void func(int a)
{
cout << "func(int a) 的调用" << endl;
}
void func(double a)
{
cout << "func(double a) 的调用" << endl;
}
void func(int a, double b)
{
cout << "func(int a,double b) 的调用" << endl;
}
void func(double a, int b)
{
cout << "func(double a,int b) 的调用" << endl;
}
int main()
{
func();
func(10);
func(10.0);
func(10, 10.0);
func(10.0, 10);
return 0;
}
函数重载的注意事项
- 引用作为重载条件
- 函数重载碰到函数默认参数
示例:
#includeusing namespace std; //函数重载注意事项 // 1.引用作为重载条件 void func(int& a) { cout << "func(int& a) 的调用" << endl; } void func(const int& a) { cout << "func(const int& a) 的调用" << endl; } //2.函数重载碰到函数默认参数 void func2(int a, int b = 10) { cout << "func2(int a,int b = 10) 的调用" << endl; } void func2(int a) { cout << "func2(int a) 的调用" << endl; } int main() { int a = 10; func(a);//调用无const func(10);//调用有const //func2(10);//碰到默认参数产生歧义,报错 return 0; }



