3 函数进阶
3.1 默认参数
语法:
返回值类型 函数名(参数=默认值){}
e:
int func(int a, int b=10, int c=100){
return a+b+c;
}
注意事项:
1.默认参数应该在非默认参数后面。
错误示范:
int func(int a, int b=10 ,int c)
2.函数声明和实现分开时,函数声明和函数实现只能有一个有默认参数。(防止声明和实现的默认参数值不一致,冲突)
int func2(int a=10, int b=10);
int func2(int a, int b){
return a + b;
}
3.2 函数占位参数
函数参数只写数据类型,不写参数名:
void func(int a, int){
cout << "in func" << endl;
}
现阶段用不到,(这个没名字的参数怎么用呢?),后面会用到。
3.3 函数重载
函数名可以相同,提高复用性。 重载条件:
- 作用域相同
- 函数名称相同
- 函数参数不同(类型、个数、顺序)
注意:函数返回值不同不可以作为重载条件。
总之,不应该有二义性,编译器需要根据传入的参数决定唯一的函数。
void func(){
cout << "func1"<< endl;;
}
void func(int a){
cout << "func2"<< endl;;
}
函数重载注意事项
- 引用作为重载条件
void func(int &a){
cout << "func1"<< endl;;
}
void func(const int &a){
cout << "func2"<< endl;;
}
- 函数重载与默认参数
void func(int a){
cout << "func1"<< endl;;
}
void func(int a, int b=10){
cout << "func2"<< endl;;
}
//不行,如果调用
func(10);// wrong, 无法决定使用哪个函数。
func(1,2) // right,只能使用第二个参数。
标签:进阶,int,C++,参数,默认,func,重载,函数
From: https://blog.51cto.com/pigeon/5785646