我刚刚通过阅读此页面开始学习 c++11 中的右值引用,但我被困在了第一页。这是我从该页面获取的代码。
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
吗? - 一般来说,你为什么要关心一个函数是否是一个右值?我想如果我阅读那篇文章的其余部分,我会得到我的答案。