为什么我可以将值分配给引用文字的右值引用?

时间:2018-08-23 11:52:01

标签: c++

为什么允许将值分配给右值引用(引用文字)?

int main()
{
    int&& a = 5;
    cout << a << endl;  //5
    a = 6;
    cout << a << endl;  //6
}

这是我对事物的理解:

  • "string"12之类的文字永远无法更改。它们是“客观的”。
  • 我可以使用变量来复制这些文字值,存储它们,更改它们,而我实际上是在更改变量中的副本。例如。普通变量初始化int a = 3; a = 4;
  • 某些右值可以更改。我知道有可修改的右值常量右值。例如。 What is the difference between a modifiable rvalue and a const rvalue?

例如我可以更改由函数返回的临时对象,即rvalue。

string three() { return “kittens”; }
three().insert(0, "All ")

但是我在这里了解到它正在更改函数three()返回的临时变量,而不是更改文字"kittens"

因此,我一开始对样本感到困惑,为什么我允许更改引用数字5右值引用?提起a = 6;时发生了什么事?

0 个答案:

没有答案