一、函数默认参数
语法: 返回值类型 函数名 (形参 = 默认值){}
int func(int a,int b = 20)
{
return a + b;
}
int main()
{
cout << "a+b=" << func(10) << endl;
system("pause");
return 0;
}
** 如果在调用函数时,我们自己填入参数,函数则会使用传入的参数,而不会使用默认值 **
int func(int a,int b = 20)
{
return a + b;
}
int main()
{
cout << "a+b=" << func(10,30) << endl;
system("pause");
return 0;
}
** 如果某个位置使用了默认参数,那么从这个位置往后,参数必须有默认值 **
** 如果函数声明有默认参数,函数实现就不能有默认参数 **
** 声明和实现只能有一个有默认参数 **
二、函数占位参数
语法:返回值类型 函数名 (数据类型){ }
void func(int a, int)
{
cout << "this right" << endl;
}
int main (){
func(10,10); //占位参数必须填补
system("pause");
return 0;
}
三、函数重载
作用:提高复用性
函数重载满足条件:①同一作用域 ②函数名称相同 ③函数参数类型 / 个数 / 顺序不同
** 函数返回值不可以作为函数重载条件 **
void func()
{
cout << "调用1" << endl;
}
void func(int a)
{
cout << "调用2" << endl;
}
四、函数重载注意事项
** 引用做函数参数 **
void fun(int &a)
{
cout << "调用1" << endl;
}
void fun(const int &a)
{
cout << "调用2" << endl;
}
int main(){
//调用1
int a = 10;
fun(a);
//调用2
fun(10);
}
** 默认参数做函数参数 **
void fun (int a, int b = 10)
{
cout << "调用成功1" << endl;
}
void fun (int a)
{
cout << "调用成功2" << endl;
}
此时两个函数为同一个函数,编译器无法区分两个函数的区别,出现二义性报错,导致调用报错