1 什么是默认实参?
函数形参中被反复赋予同一数值的参数称为默认实参(Default argument)。
2 为什么是默认实参?函数重载是多个函数通过编译器函数匹配规则实现的,默认实参则是通过一个函数定义完成的,形式上更加简单。
3 怎么用默认实参?在函数声明中赋予一个或者多个形参默认值,在使用时省略相应的实参即可。需要注意以下几点:
- 默认实参仅出现声明处
- 默认实参可补充
void fun(int a,string str="apple",double b=3.14);
void fun(int a=1,string str,double b);//补充声明只需指明补充部分即可,已有部分不能覆盖
刚开始仅str
和b
有默认值,紧接着又有一条声明完成了默认实参的补充。
- 默认实参只能连续分布在右半部分
void fun(int a,string str="apple",double b=3.14);//ok
显然,str
和b
都是连续分布的在右侧的。像这些就不允许了:
void fun(int a, string str = "apple", double b);
void fun(int a=1, string str = "apple", double b);
void fun(int a=1, string str , double b);
- 全局变量可作为默认实参,局部不可以
int value=23;
void fun(int a=value,string str="apple",double b=3.14);
int main()
{
return 0;
}
4 其他注意事项
C语言不支持默认实参。
void fun(int a=3)
{
printf("a=%d\n",a);
}
int main()
{
fun(2);
return 0;
}