第三课 函数的提高
3.1函数默认参数
在C++中,函数的形参列表中的形参是可以有默认值的
语法: 返回值类型 函数名(参数 = 默认值 ){}
注意:
- 如果某个位置形参有默认值,那么从这个位置往后,都必须要有默认值
- 函数的声明和定义只能有一个含有默认值
// 1.如果某个位置形参有默认值,那么从这个位置往后,都必须要有默认值
// 2.函数的声明和定义只能有一个含有默认值
void func1(int a, int b = 5, int c = 10);
void func1(int a, int b, int c)
{
cout << a + b + c << endl;
}
int main()
{
func1(10); // 有默认值可以不传
return 0;
}
3.2函数占位参数 C++中函数的形参列表里可以有展位参数,用来做占位,调用函数时必须填补该位置(或给默认参数)
语法: 返回值类型 函数名 ( 数据类型 ){}
void func(int a, int = 10)
{
cout << "This is a func" << endl;
}
int main()
{
func();
}
3.3函数重载 作用:函数名可以重复,提高复用性
函数重载满足条件:
- 同一个作用域下
- 函数名称相同
- 函数参数 类型不同 或者 个数不同 或者 顺序不同
void func()
{
cout << "func() 调用" << endl;
}
void func(int a)
{
cout << "func(int a) 调用" << endl;
}
void func(int a,double b)
{
cout << "func(int a,double b) 调用" << endl;
}
void func(double b,int a)
{
cout << "func(double b,int a) 调用" << endl;
}
int main()
{
//func();
//func(10);
//func(10, 3.14);
func(3.14, 10);
system("pause");
return 0;
}
注意:函数的返回值不可以作为函数重载的条件
注意事项:
引用作为重载的条件:
void func(int& a) //
{
cout << "func(int& a) 调用" << endl;
}
void func(const int& a) //
{
cout << "func(const int& a) 调用" << endl;
}
int main()
{
int a = 10;
func(a); //调用无const
func(10); //调用有const
return 0;
}
函数重载碰到函数默认参数
void func2(int a,int b = 10)
{
cout << "func(int a,int b = 10) 调用" << endl;
}
void func2(int a)
{
cout << "func(int a) 调用" << endl;
}
存在二义性,调用func(10)会出错,尽量避免

浙公网安备 33010602011771号