一、先確定基礎:左值(Lvalue)和右值(Rvalue)
理解Rvalue引用,首先得搞清楚左值和右值的概念。
-
左值(Lvalue):有明確內存地址的表達式,可以取地址。比如變量名、引用等。
復制代碼
int a = 10; // a是左值 int& ref = a; // ref也是左值
-
右值(Rvalue):沒有確定持續存在的內存地址,通常是臨時對象或字面量。比如表達式的結果或字面量。
復制代碼
5; // 5是一個右值(字面量) a + 2; // 這是一個右值(表達式的結果) std::string("abc"); // 臨時字符串對象,也是右值
總結一句話:左值可以“存放在某個什么地方”,右值是“臨時的、可以馬上用完的東西”。
二、引入"&":為什么要用“&&”?
傳統上(C++98/03),引用(&
)只能綁定到左值,叫左值引用。比如:
復制代碼
int a =