问题标签 [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.

0 投票
3 回答
246 浏览

c - 右值定义是不能赋值的对象,但为什么文字是左值?

所以我正在回顾我们即将到来的主题,我遇到了左值和右值,尽管定义让我感到困惑。为什么文字是左值?

“右值是指存储在内存中某个地址的数据值。右值是一个表达式,不能为其分配值”

“左值的原始定义是指“可以出现在赋值左侧的对象。”但是,const 对象是左值,但它们不能出现在赋值的左侧。

0 投票
2 回答
45 浏览

string - 将字符串向量转换为赋值语句的右值

我想不出一种有效的方法来将字符串向量转换为赋值语句的右值。例如,我有一个包含三个元素“5”、“*”、“3”的向量,所以我需要一个赋值语句,它基本上等同于以下内容

提前致谢;

0 投票
2 回答
277 浏览

c++ - 为什么用括号包裹的标记不是右值表达式?

考虑以下代码:

为什么foo.bar评估为 1?

中的括号不会(foo.bar)创建一个未命名的(r 值)表达式,然后递增?

0 投票
2 回答
195 浏览

c++ - 是否需要临时或文字才能拥有右值?

这个问题询问是否所有临时对象都是右值。

答案是否定的,因为如果我们考虑这个表达式:

然后,可以在后续表达式中将相同的临时(2 + 3)值(此处为右值)用作左值:

所以这个临时不是(仅)一个右值。

则逻辑语句temporary ==> rvalue为假。

但是,我们不能写

或者

或者

因此我的问题是,我们可以在没有临时或文字的情况下在某个表达式中生成右值吗?是rvalue ==> (temporary or literal)真的吗?

0 投票
2 回答
705 浏览

c++ - 获取 const 左值引用的地址是否合法?

在此代码中,a绑定到一个右值。获取地址是否合法?(通过法律我的意思是:在代码格式错误?我是否导致了未定义的行为?)

0 投票
1 回答
219 浏览

c++ - 右值引用和文字

考虑代码

gcc 4.7.2 给出错误

为什么不将文字推导出为右值?

0 投票
1 回答
119 浏览

c++ - 按值返回指针不会移动对象

我用 vs2011 编译了这段代码。它打印第一个构造函数然后复制构造函数。但是,如果我将函数更改为返回a而不是ap,它将移动对象。这是一个错误还是为什么会这样?*ap 不是右值吗?

0 投票
3 回答
501 浏览

c++ - 我们可以可靠地预先增加/减少右值吗?

例如,std::vector<int>::iterator it = --(myVec.end());。这在 GCC 4.4 中有效,但我听说它不是可移植的。

0 投票
0 回答
99 浏览

c++ - 为什么硬编码的字符串常量是左值?

可能重复:
为什么字符串文字是左值,而所有其他文字都是右值?

什么是移动语义?出现以下代码片段和注释:

评论:

在上面的例子中,“hello world”是一个 const char[12] 类型的左值。

为什么硬编码常量"hello world"是 const char[12] 类型的左值,而不是 const char[12] 类型的右值

0 投票
5 回答
202 浏览

c++ - c++03 vs 11中的返回值

我花了几个小时来讨论rvalue和 lvalue。这是我的理解

c++03下,Bar1()会复制返回对象(就在return之前),然后返回被复制对象的地址;执行一个即将被销毁的对象的浪费副本。Bar2()将返回在函数中创建的对象。

在 c++11 下,Bar1()本质Bar2()上是等价的(也等价于Bar2()c++03)。

是对的吗?如果不是,请详细说明。