通过左值引用修改右值的行为是什么?

无效指针

假设我有以下内容:

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

取消引用右值指针会产生左值吗?

来自分类Dev

左值到右值引用绑定

来自分类Dev

为什么GCC允许通过右值引用捕获?

来自分类Dev

在C ++ 11中右值引用数组的目的是什么?

来自分类Dev

如何在模板中存储右值或左值引用

来自分类Dev

左值引用类型是什么意思

来自分类Dev

引用右值引用的地址是什么意思?

来自分类Dev

为什么可以将右值间接绑定到左值引用,而不能直接绑定呢?

来自分类Dev

用右值初始化左值引用

来自分类Dev

为什么将表达式强制转换为右值,对函数的引用是左值?

来自分类Dev

为什么标准允许左值引用元组分配右值引用元组?

来自分类Dev

为什么C ++左值对象不能绑定到右值引用(&&)?

来自分类Dev

为什么右值引用作为左值引用传递?

来自分类Dev

为什么重载的移动赋值运算符返回左值引用而不是右值引用?

来自分类Dev

Widget && rhs是左值还是右值引用

来自分类Dev

成员函数可以返回对右值对象的可修改左值引用吗?

来自分类Dev

接受对类模板参数的左值和右值引用

来自分类Dev

Lambda通过引用捕获右值引用

来自分类Dev

关于右值引用的困惑:它的类型是什么?

来自分类Dev

通过引用传递值并修改值

来自分类Dev

数据成员作为左值引用或右值副本

来自分类Dev

取消引用右值指针会产生左值吗?

来自分类Dev

左值到右值引用绑定

来自分类Dev

返回语句将右值引用绑定到左值?

来自分类Dev

左值引用类型是什么意思

来自分类Dev

返回const左值引用到右值临时?为什么这样做?

来自分类Dev

右值引用到左值引用-UB?

来自分类Dev

为什么不能使用右值来初始化左值引用?

来自分类Dev

修改值 - 通过引用传递

Related 相关文章

热门标签

归档