C++缺省参数
本文详细讲解了C++中缺省参数的使用和一些注意事项。
缺省参数
-
缺省参数:缺省参数是声明或定义函数时为函数的参数指定⼀个缺省值。在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参。(有些地方把缺省参数也叫默认参数)
下面举例:
void Print(int a=10){
cout<<a<<endl;
}
int main()
{
int x=20;
Print(x); //打印结果:20
Print(); //打印结果:10
return 0;
}
缺省值的使用
-
当一个函数有在头文件声明的时候,缺省值只能够在头文件的函数声明中提供,在定义函数内容时提供是非法的,程序会报错重复提供默认参数。例如:
void Print(int a=1,int b=2,int c=3);//头文件中的函数声明 //非法定义如下: void Print(int a=1,int b=2,int c=3){ cout<<a<<' '<<b<<' '<<c; } //正确定义如下: void Print(int a,int b,int c){ cout<<a<<' '<<b<<' '<<c; }
-
当有多个变量的函数使用缺省参数可以省略全部,也可以省略部分。
void Print(int a=1,int b=2,int c=3){ cout<<a<<' '<<b<<' '<<c; } int main() { int x=10,y=20,z=30; Print(x,y,z); //打印结果10 20 30 Print(x,y); //打印结果10 20 3 等效Print(x,y,c) Print(x); //打印结果10 2 3 等效Print(x,b,c) Print(); //打印结果1 2 3 等效Print(a,b,c) return 0; }
-
注意在声明函数的时候只能够从右往左依次提供缺省值,不一定要提供所有的值,但是不能够跳跃提供,例如:
void Print(int a,int b=2,int c=3);//合法的函数声明 void print(int a=2,int b,int c=3);//非法的函数声明
-
注意在主函数中调用函数的时候,传参只能够从左往右依次提供实参,无法跳跃传参
void Print(int a,int b=20,int c=30){ cout<<a<<' '<<b<<' '<<c; } int main(){ Print(1,2,3); //合法的 Print(1,2); //合法的 Print(,2,3); //非法的 return 0; }