问题标签 [rvalue]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 右值定义是不能赋值的对象,但为什么文字是左值?
所以我正在回顾我们即将到来的主题,我遇到了左值和右值,尽管定义让我感到困惑。为什么文字是左值?
“右值是指存储在内存中某个地址的数据值。右值是一个表达式,不能为其分配值”
“左值的原始定义是指“可以出现在赋值左侧的对象。”但是,const 对象是左值,但它们不能出现在赋值的左侧。
string - 将字符串向量转换为赋值语句的右值
我想不出一种有效的方法来将字符串向量转换为赋值语句的右值。例如,我有一个包含三个元素“5”、“*”、“3”的向量,所以我需要一个赋值语句,它基本上等同于以下内容
提前致谢;
c++ - 为什么用括号包裹的标记不是右值表达式?
考虑以下代码:
为什么foo.bar
评估为 1?
中的括号不会(foo.bar)
创建一个未命名的(r 值)表达式,然后递增?
c++ - 是否需要临时或文字才能拥有右值?
这个问题询问是否所有临时对象都是右值。
答案是否定的,因为如果我们考虑这个表达式:
然后,可以在后续表达式中将相同的临时(2 + 3)
值(此处为右值)用作左值:
所以这个临时不是(仅)一个右值。
则逻辑语句temporary ==> rvalue
为假。
但是,我们不能写
或者
或者
因此我的问题是,我们可以在没有临时或文字的情况下在某个表达式中生成右值吗?是rvalue ==> (temporary or literal)
真的吗?
c++ - 获取 const 左值引用的地址是否合法?
在此代码中,a
绑定到一个右值。获取地址是否合法?(通过法律我的意思是:在代码格式错误?我是否导致了未定义的行为?)
c++ - 右值引用和文字
考虑代码
gcc 4.7.2 给出错误
为什么不将文字推导出为右值?
c++ - 按值返回指针不会移动对象
我用 vs2011 编译了这段代码。它打印第一个构造函数然后复制构造函数。但是,如果我将函数更改为返回a而不是ap,它将移动对象。这是一个错误还是为什么会这样?*ap 不是右值吗?
c++ - 我们可以可靠地预先增加/减少右值吗?
例如,std::vector<int>::iterator it = --(myVec.end());
。这在 GCC 4.4 中有效,但我听说它不是可移植的。
c++ - 为什么硬编码的字符串常量是左值?
可能重复:
为什么字符串文字是左值,而所有其他文字都是右值?
在什么是移动语义?出现以下代码片段和注释:
评论:
在上面的例子中,“hello world”是一个 const char[12] 类型的左值。
为什么硬编码常量"hello world"
是 const char[12] 类型的左值,而不是 const char[12] 类型的右值?
c++ - c++03 vs 11中的返回值
我花了几个小时来讨论rvalue和 lvalue。这是我的理解
c++03下,Bar1()
会复制返回对象(就在return之前),然后返回被复制对象的地址;执行一个即将被销毁的对象的浪费副本。Bar2()
将返回在函数中创建的对象。
在 c++11 下,Bar1()
本质Bar2()
上是等价的(也等价于Bar2()
c++03)。
是对的吗?如果不是,请详细说明。