C ++默认参数为另一个参数

时间:2016-09-04 03:46:48

标签: c++ parameters

我可以使用第一个参数作为第二个参数的默认值,比如这个吗?

int do_something(int a, int b = a + 1){
    /* ... */
}

我的编译器似乎不喜欢它,所以也许它不被允许。

3 个答案:

答案 0 :(得分:11)

您的问题已经得到解答(不允许),但是如果您没有意识到,那么解决方法对于函数重载来说是微不足道的。

int do_something(int a, int b){
    /* ... */
}

int do_something(int a) {
    return do_something(a, a + 1);
}

答案 1 :(得分:9)

不允许。

  

未指定函数参数的评估顺序。因此,参数a   函数不应在默认参数中使用,即使它们未被评估。

(来自[dcl.fct.default] / 9 in C ++ 14)

答案 2 :(得分:-5)

如果我是你,我会这样做

int do_something(int a, int b){
    b = a + 1;
    /* ... */
}

但是在完成执行功能后b值不会改变。 通过引用传递b将起作用。 (int& b)

相关问题