【发布时间】:2013-06-28 05:37:11
【问题描述】:
当我阅读http://thbecker.net/articles/rvalue_references/section_01.html 时,我得到了最简短的关注。
// lvalues:
//
int i = 42;
i = 43; // ok, i is an lvalue
int& foo();
foo() = 42; // ok, foo() is an lvalue
int* p1 = &foo(); // ok, foo() is an lvalue
// rvalues:
//
int foobar();
int j = 0;
j = foobar(); // ok, foobar() is an rvalue
int* p2 = &foobar(); // error, cannot take the address of an rvalue
j = 42; // ok, 42 is an rvalue
为什么 int* p2 = &foobar();是错误语句,而 int* p1 = &foo();不是错误。后一个是左值,而第一个是右值?
提前致谢
【问题讨论】:
-
我相信你的最后一句话倒退了