一、函数默认参数
在C++中,函数的形参可以有默认值
注意
- 如果某个位置参数有默认值,那么从这个位置往后,从左向右,必须都要有默认值
- 如果函数声明有默认值,函数实现的时候就不能有默认参数
- 有默认值调用时也可以重新赋值
//1.从b位置开始有默认值,后面的c、d等等都要有默认值
int func1(int a, int b = 10, int c = 20, int d = 30){
return a + b + c + d;
}
//2
int func2(int a = 10, int b = 10); //声明有默认值
int func2(int a, int b){ //实现就不能有默认参数
return a + b;
}
int main(){
int a = func1(10, 20); //调用时可重新赋值
int b = func1(100);
int c = func2();
}
二、函数占位参数
占位参数必须填补
void func(int a, int){
cout << "func" << endl;
}
int main(){
func(10, 10); //占位参数必须填补
}
二、函数重载
作用: 函数名可相同,提高复用性
条件:
- 同一个作用域下
- 函数名称相同
- 函数参数的 类型不同 或 个数不同 或 顺序不同
注意: 函数的返回值不可作为函数重载的条件
void func(){
cout << "func" << endl;
}
void func(int a){};
void func(double a){}; //类型
void func(int a, double b){}; //个数
void func(double a, int b){}; //顺序
//函数的返回值不可作为函数重载的条件
//int func(double a, int b){};
函数重载的注意事项
- 引用作为重载条件
void func(int& a){
cout << "int& a" << endl;
}
void func(const int& a){
cout << "int& a" << endl;
}
int main(){
int a = 5;
func(a); //调用无const
func(10); //调用有const
}
- 函数重载遇到函数默认参数
//函数如果要重载一般不设置默认参数
void func(int a, int b = 10){
cout << a << " " << b << endl;
};
void func(int a){
cout << a << endl;
}
int main(){
int a = 10;
//func(10); 由于函数二义性,碰到默认参数会产生歧义
func(10, 10);
}