在C ++函数中,我可以使用参数的getter之一来设置其后的其他参数的默认值吗?例如,如果我有跟随类Foo,
class Foo{
public:
setID();
getID();
private:
string id;
}
我可以像这样写一个函数fooManipulator,
int fooManipulator(Foo bar, string id = bar.getId());
答案 0 :(得分:3)
不,如上所述,函数参数的评估顺序未指定。
但是,您可以通过这样的过载轻松实现效果:
int fooManipulator(Foo bar)
{
return fooManipulator(bar, bar.getId());
}
答案 1 :(得分:2)
没有。您不能在默认参数中引用另一个参数,因为未指定函数参数的评估顺序。
例如,在fooManipulator
函数中,传递给参数id
的参数可以在参数传递给参数bar
之前进行评估。这可能会导致在参数bar
的默认参数中使用id
无效。