C++ 将其他参数作为默认值的函数参数
我希望函数参数将其他参数的值作为默认值 我的问题是:为什么不允许我这样做C++ 将其他参数作为默认值的函数参数,c++,default-arguments,C++,Default Arguments,我希望函数参数将其他参数的值作为默认值 我的问题是:为什么不允许我这样做 void foo(int a, int b = a) { } 还有别的办法吗 void foo(int a) { foo(a,a); } void foo(int a, int b) { } 使用 根据标准,这是一个错误 从C++11标准: 8.3.6默认参数 每次调用函数时都会计算9个默认参数。未指定函数参数的求值顺序。因此,函数的参数不得用于默认参数, 即使未对其进行评估。在默认参数之前声明的函数的参数
void foo(int a, int b = a)
{
}
还有别的办法吗
void foo(int a)
{
foo(a,a);
}
void foo(int a, int b)
{
}
使用
根据标准,这是一个错误
从C++11标准:
8.3.6默认参数
每次调用函数时都会计算9个默认参数。未指定函数参数的求值顺序。因此,函数的参数不得用于默认参数,
即使未对其进行评估。在默认参数之前声明的函数的参数在作用域中,可以隐藏命名空间和类成员名称。[示例:
int a;
int f(int a, int b = a); // error: parameter a
// used as default argument
-[结束示例]
b
将使用作为a
参数传入的值进行初始化
发件人:
每次使用调用函数时,都会计算默认参数
没有对应参数的参数。不应使用参数
在默认参数中显示为可能计算的表达式。[示例:
int a;
int f(int a, int b = a); // error: parameter a
// used as default argument
及
int a;
int f(int a, int b = a); // error: parameter a
// used as default argument