3、函数基础
3.1 函数默认参数
在C++中,函数的形参列表中的形参是可以有默认值的
注意事项:
-
如果某个位置已经有了默认参数,往后的形参都要有默认参数
-
函数声明和函数实现只能有一个有默认参数
示例:
//如果自己传入参数,就用自己的参数,如果没有,就用默认值
void func(int a , int b = 100, int c = 200) {
cout << "a=" << a << endl;
cout << "b=" << b << endl;
cout << "c=" << c << endl;
}
void func(int a, int b, int c );//声明函数 默认参数不能重新定义
int main() {
func(20,30);
return 0;
}
3.2 函数占位参数
C++中函数的形参列表里可以有占位参数,用来做占位,调用函数时必须填补该位置。
语法:返回值类型 函数名 (数据类型){}
//函数占位参数,占位参数也可以有默认值
void func(int a , int = 10){
cout << "func is start" << endl;
}
int main (){
func(10,10);//占位参数如果没有默认值必须填补
return 0;
}
3.3 函数重载
3.3.1 基础语法
作用:函数名可以相同,提高复用性
函数重载满足条件:
- 同一个作用域下
- 函数名称相同
- 函数参数类型不同 或者 个数不同 或者 顺序不同
注意:函数的返回值不能作为函数重载的条件
示例:
void func(int a, int b) {
cout << "func has int a, int b" << endl;
}
void func(int a) {
cout << "func has int a" << endl;
}
void func(double c) {
cout << "func has float c" << endl;
}
int main() {
func(10, 20);//func has int a, int b
func(10);//func has int a
func(2.2);//func has float c
return 0;
}
3.3.2 注意事项
-
引用作为函数重载的条件
-
函数重载碰到默认参数
//引用作为函数重载的条件
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);//调用func(int &a)
func(10);//调用func(const int &a)
}