我正在看有关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。 最佳答案
a
是static
中GetValue()
变量的副本:
int a = GetValue();
因此,以后的作业:
GetValue() = 8;
不会影响
a
的值。但是,它确实修改了静态变量value
的值,该值随后被检索两次:std::cout << GetValue() << std::endl;
int b = GetValue();
关于c++ - 向左值引用分配右值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62023923/