我刚开始阅读这篇文章学习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
。 - 一般来说,您为什么要关心函数是否是右值?我认为如果我读完那篇文章,就能得到答案。