使用参数的getter之一来设置C ++函数中另一个参数的值?

时间:2011-08-23 04:17:04

标签: c++ function parameters

在C ++函数中,我可以使用参数的getter之一来设置其后的其他参数的默认值吗?例如,如果我有跟随类Foo,

class Foo{
   public:
      setID();
      getID();
   private:
      string id;
}

我可以像这样写一个函数fooManipulator,

int fooManipulator(Foo bar, string id = bar.getId());

2 个答案:

答案 0 :(得分:3)

不,如上所述,函数参数的评估顺序未指定。

但是,您可以通过这样的过载轻松实现效果:

int fooManipulator(Foo bar)
{
    return fooManipulator(bar, bar.getId());
}

答案 1 :(得分:2)

没有。您不能在默认参数中引用另一个参数,因为未指定函数参数的评估顺序。

例如,在fooManipulator函数中,传递给参数id的参数可以在参数传递给参数bar之前进行评估。这可能会导致在参数bar的默认参数中使用id无效。