我想实现这个目标:
- second parameter by default set to first argument
Run Code Online (Sandbox Code Playgroud)
就像是:
int foo (int a, int b = a);
Run Code Online (Sandbox Code Playgroud)
但是怎么做呢?
非常感谢!
Luc*_*ore 18
这是禁止的:
9)每次调用函数时都会计算默认参数.函数参数的评估顺序未指定. 因此,函数的参数不应在默认参数表达式中使用,即使它们未被计算.在默认参数表达式之前声明的函数的参数在范围内,并且可以隐藏名称空间和类成员名称.[例如:
int a;
int f(int a , int b = a); / / error: parameter a
/ / used as default argument
typedef int I;
int g( float I , int b = I (2)); / / error: parameter I found
int h(int a , int b = sizeof (a )); / / error, parameter a used
/ / in default argument- 末端的例子]
另一种方法是重载:
int foo(int a, int b);
int foo(int a)
{
return foo(a,a);
}
Run Code Online (Sandbox Code Playgroud)