什么是可修改的Rvalue?

时间:2017-06-27 17:25:51

标签: c++ c++11

有人会举一个“可修改的右值”的例子吗?我的理解是rvalue出现在表达式“=”的右侧。 我测试了以下示例,但我不确定它是否解释了“可修改的右值”

int i=1
int &j = i;
j=2;  //cout: i == 2, 

1 个答案:

答案 0 :(得分:6)

这在某种程度上取决于短语“可修改的右值”的上下文。但是,这是一个可能的例子:

struct Modifiable
{
  int x;
  void modify() { std::cout << x << '\n'; x = -x; std::cout << x << '\n'; }
};

Modifiable demo()
{
  Modifiable m;
  m.x = 42;
  return m;
}

int main()
{
  demo().modify();
}

demo()的返回值是一个右值(实际上甚至是一个prvalue),但是通过调用modify()来修改。

[Live example]

相关问题