有人会举一个“可修改的右值”的例子吗?我的理解是rvalue出现在表达式“=”的右侧。 我测试了以下示例,但我不确定它是否解释了“可修改的右值”
int i=1
int &j = i;
j=2; //cout: i == 2,
答案 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()
来修改。