使用参数的 getter 之一来设置 C++ 中另一个参数的值;功能?
在 C++ 函数中,我可以使用其中一个参数的 getter 来设置其后面的另一个参数的默认值吗?例如,如果我有以下类 Foo,
class Foo{
public:
setID();
getID();
private:
string id;
}
我可以编写这样的函数 fooManipulator 吗?
int fooManipulator(Foo bar, string id = bar.getId());
In a C++ function, can I use one of the parameter's getter to set the default value of the other parameter following it? For example if I have the followig class Foo,
class Foo{
public:
setID();
getID();
private:
string id;
}
Can I write a function fooManipulator like this,
int fooManipulator(Foo bar, string id = bar.getId());
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不,正如已经说过的,函数参数的求值顺序是未指定的。
但是,您可以通过如下重载轻松实现效果:
No, as has been stated, the order of evaluation of arguments to a function is unspecified.
However, you can achieve the effect easily with an overload like this:
不可以。您不能在默认参数中引用其他参数,因为函数参数的求值顺序未指定。
例如,在
fooManipulator
函数中,传递给参数id
的参数可能会在传递给参数bar
的参数之前求值。这可能会使参数id
的默认参数中使用bar
无效。No. You cannot refer to another parameter in a default argument because the order of evaluation of function arguments is unspecified.
For example, in your
fooManipulator
function, the argument passed to parameterid
may be evaluated before the argument passed to parameterbar
. This could make invalid the use ofbar
in the default argument for parameterid
.