1 默认参数
在C++中,函数的形参列表中的形参是可以有默认值的
int fun(int a,int b=10,int c=20)
{
return a+b+c;
}
int main()
{
int a=fun(10);
cout<<a<<endl;//a 40
}
注意事项:
(1) 如果某个位置已经有了默认参数,那么从这个位置往后(从左到右)都必须有默认值
int fun(int a,int b=10,int c)//error
{
return a+b+c;
}
int main()
{
int a=fun(10);
cout<<a<<endl;
}
(2)声明和函数只能有一处有默认值
声明和定义在 main函数的上面:
int fun(int a,int b,int c);
int fun(int a,int b,int c=20)
{
return a+b+c;
}
int main()
{
int a=fun(10,30);//只要两个参数
cout<<a<<endl;//a 40
}
//这种写法和上面等价
int fun(int a,int b,int c=20);
int fun(int a,int b,int c)
{
return a+b+c;
}
int main()
{
int a=fun(10,30);
cout<<a<<endl;
}
定义在main函数的下面:
int fun(int a,int b=20,int c=10);
int main()
{
int a=fun(10);
cout<<a<<endl;
}
int fun(int a,int b,int c)
{
return a+b+c;
}
int fun(int a,int b,int c);
int main()
{
int a=fun(10,30);//case1 error
cout<<a<<endl;
}
int fun(int a,int b,int c=20)
{
return a+b+c;
}
case1:error 应该传入三个参数 ;正确写法应该是fun(10,20,30),
总结:
声明和定义都在main函数上面时,实参个数由有默认值的决定。
定义在下面时,函数调用时需要的实参个数 由声明决定,此时定义的默认值无效