我正在看有关rvalues和lvalues的教程,我有些困惑。

int& GetValue()
{
    static int value = 5;
    return value;
}

int main()
{
    int a = GetValue();

    GetValue() = 8;

    std::cout << a << std::endl;
    std::cout << GetValue()  << std::endl;

    int b = GetValue();
    std::cout << b << std::endl;
    return 0;
}


此打印
5
8
8

我不明白GetValue() = 8;如何将值从5更改为8。现在,当您调用GetValue()时,我总是得到8。

最佳答案

astaticGetValue()变量的副本:

int a = GetValue();

因此,以后的作业:
GetValue() = 8;

不会影响a的值。但是,它确实修改了静态变量value的值,该值随后被检索两次:
  • std::cout << GetValue() << std::endl;
  • int b = GetValue();
  • 关于c++ - 向左值引用分配右值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62023923/

    10-13 09:10