2
我刚刚开始通过阅读this page了解C++ 11中的右值引用,但我陷入了第一页。这是我从该页面获取的代码。C++:函数左值或右值
int& foo();
foo() = 42; // ok, foo() is an lvalue
int* p1 = &foo(); // ok, foo() is an lvalue
int foobar();
j = foobar(); // ok, foobar() is an rvalue
int* p2 = &foobar(); // error, cannot take the address of an rvalue
- 为什么
foo()
左值?是因为foo()
返回int&
这基本上是一个左值? - 为什么
foobar()
是右值?是因为foobar()
返回int
? - 一般来说,如果一个函数是一个右值,为什么要关心?我想如果我阅读那篇文章的其余部分,我会得到我的答案。