在C++中,函数可以有默认的参数。函数的默认参数值,即在定义参数的时候同时给它一个初始值。在函数调用的时候,我们可以省略含有默认参数值的参数。也就是说,如果用户指定了参数值,就使用用户指定的参数值,否则就使用默认的参数值。
#include <stdio.h>
void debug(const char *ptr = "------------")//参数的值也可以是表达式
{
printf("%s \n", ptr);
}
int main()
{
debug();
debug("hello");
}
当我们调试追踪代码时,可以实现这样的一个debug
函数,可以输出默认的调试信息,也可以输出特定的调试信息。
注意事项:
- 如果某个参数是默认参数,那么它后面的参数必须都是默认参数;
- 默认参数可以放在函数声明或者定义中,但只能放在二者之一;
- 函数重载时谨慎使用默认参数值;
因此,形如:void func(int a; int b=2; int c);
这样的操作是不允许的,默认参数的连续性可以保证编译器正确的匹配参数。
同时,函数重载时如果如用默认的参数值容易造成混淆,比如:
#include <stdio.h>
class Test
{
public:
int func(int a)
{
return a;
}
int func(int a, int b = 1)
{
return a+b;
}
};
int main()
{
Test test;
int result = test.fun(1);
return 0;
}
这种情况下,编译器就不知道到底选择哪个函数。