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
? - 一般來說,如果一個函數是一個右值,爲什麼要關心?我想如果我閱讀那篇文章的其餘部分,我會得到我的答案。