函数默认参数
函数默认参数
:在C++中函数的形参列表中的形参是可以有默认值的。
int func1(int a, int b=10, int c=10) {
return a + b + c;
}
//如果某个位置已有默认参数值,从这个位置往后,都必须有默认参数值
int func2(int a, int b=10, int c=10,int d=10) {
return a + b + c + d;
}
//函数声明
int func3(int a=10, int b=10); //如果函数声明有默认参数,函数实现就不能有默认参数(声明和实现只能有一个有默认参数)
int main() {
cout << func1(10,30) << endl; //如果自己传入数据就用自己的数据,如果没有传入数据则用形参提供的默认值
cout << func2(10,20,20) << endl;
system("pause");
return 0;
}
//函数实现
int func3(int a,int b) {
return a + b;
}
函数的占位参数
函数的占位参数
:C++中的函数的形参列表里可以有占位参数,用来占位,调用函数时必须填补该位置。
//占位参数
int func4(int a ,int) {
cout << "this is func" << endl;
return a;
}
//占位参数也可以有默认参数
int func5(int a,int = 20) {
cout << "this is func" << endl;
return a;
}
函数重载
函数重载
:函数名可以相同,提高复用性。函数重载条件:1、同一个作用域下 2、函数名相同 3、函数参数类型不同,或者个数不同,或者顺序不同。
//函数重载,可以让函数名相同,提高复用性
//函数重载条件:1、同一个作用域下 2、函数名相同 3、函数参数类型不同,或者个数不同,或者顺序不同
void again() {
cout << "调用again这个函数" << endl;
}
void again(int a) {
cout << "调用again(int a)这个函数" << endl;
}
void again(double a) {
cout << "调用again(double a)这个函数" << endl;
}
int main() {
again(3.14);
system("pause");
return 0;
}
函数重载注意事项
函数重载注意事项
:引用作为重载条件。函数重载碰到函数默认参数。
//引用作为函数重载的条件
void repeat(int& a) { //int &a = 10; 是不合法的
cout << "调用repeat(int &a)这个函数" << endl;
}
void repeat(const int& a) { //const int &a = 10;
cout << "调用repeat(const int &a)这个函数" << endl;
}
//函数重载遇到默认参数
void par(int a) {
cout << "调用par(int a)这个函数" << endl;
}
void par(int a,int b) {
cout << "调用par(int a,int b)这个函数" << endl;
}
int main() {
int a = 10;
repeat(a);
repeat(10);
par(10); //当函数重载碰到默认参数,出现二义性会报错,尽量避免这些情况
par(10,20);
system("pause");
return 0;
}