c++中形参是可以有默认值的
语法:返回值类型 函数名(参数=默认值){}
注意事项:
1.如果某个位置已经有了默认参数,那么从这个位置往后,从左到右都必须要有默认值。
2.如果函数的声明有了默认参数,那么函数的实现不能有默认参数。
Int func(int a=10,int b=10);//函数声明
Int func(int a=10,int b=10){
Return a+b;
}是错误的,如果实现中写形参a=20,b=20,则编译器不知道该运用哪一个
所以声明或者函数实现中只能有一个有默认参数
函数占位参数
语法:返回值类型 函数名(数据类型){}
Void func(int a,int ){}
Void main(){
func(10,10);
}
//占位参数也可以有默认参数
Void func(int a,int =10){}
Void main(){
func(10);
}
函数重载(可以让函数名相同,提高复用性)
满足条件:同一个作用于下;函数名称相同;函数参数类型不同 或者 个数不同 或者 顺序不同
//注意:函数的返回值不可以作为函数重载的条件
注意事项
1.引用作为重载的条件
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;//a是个变量,可读可写
func(a);//会调用上面的func(int &a)函数
func(10);//会调用下面的func(const int &a)函数
}
2.函数重载碰到默认参数
Void func2(int a,int b=10){}
Void func2(int a){}
Int main(){
func2(10);//当函数重载碰到默认函数,两个函数的调用条件都满足,出现二义性,报错,尽量避免这种情况
func2(10,20);//正确,会调用上面的函数
}