假设我有以下内容:
class foo
{
public:
foo& Ref() { return *this; }
int stuff;
};
void do_stuff(foo& f)
{
f.stuff = 1;
}
int main()
{
do_stuff(foo().Ref());
}
我正在通过左值引用修改右值。这合法吗?如果可以,那么有人可以解释原因并提供标准中的相关部分吗?
我正在通过左值引用修改右值。
不你不是。在内部do_stuff
,表达式f
是一个左值,而不是一个右值。值类别是关于表达式的,而不是对象;对象具有类型。
您正在修改一个临时文件,但这很好。我没有简单的单一段落可以这么说。根本不禁止在任何地方修改碰巧是临时对象的对象。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句