gpt4 book ai didi

c++ - 为什么我可以为右值引用赋值?

转载 作者:行者123 更新时间:2023-12-03 10:05:08 26 4
gpt4 key购买 nike

我最近开始学习右值、左值、 move 语义,但我无法理解右值引用等一些概念。为什么我可以为右值引用赋值:int&& x = 10; ..这是否意味着右值引用是左值(我认为右值引用是右值)?如果这是真的......拥有右值引用有什么意义?如果那是假的,那么右值 ref 和左值有什么区别?

最佳答案

why can I assign a value to a rvalue ref like : int&& x = 10


那不是任务。那就是初始化。在这里,一个临时对象从整数常量中具体化,并且引用绑定(bind)到该临时对象。对 const 的左值引用也可以做同样的事情: const int& x = 10 .它不能通过对非 const 的左值引用来完成,因为它们不能绑定(bind)到右值。

doesn't that mean that an rvalue ref is an lvalue


只有表达式有值。 int&& x = 10;是声明而不是表达式。因此,声明首先没有值(value)。
声明包含一个表达式 10这是一个prvalue。
类型也不是表达式,因此“右值引用是左值”是没有意义的。
变量也没有值类别。但是 id-expressions - 只是命名变量的表达式 - 确实具有值类别。无论命名变量的类型如何,它们都是左值 - 是的,即使类型是右值引用。

关于c++ - 为什么我可以为右值引用赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65552754/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com