922 B
922 B
rvalue 是指:
- 等號右邊的值
- 臨時的值,例如運算的結果
- 無法被取址(address-of)的物件
rvalue reference
一般的參考只能參考lvalue,如下的程式是ok的:
int a = 10;
int& b = a;
但是像這樣就不行了:
int a = 10;
int b = 5;
int& c = a + b;
因為a+b是一個rvalue(臨時的值,沒辦法取址),所以無法參考。
但是可以用&&來參考rvalue。例如:
int a = 10;
int b = 5;
int&& c = a + b; // c = 15
而不用這樣:
int a = 10;
int b = 5;
int r = a + b;
int& c = r;
了解rvalue reference之後,就可以實作類別的 move constructor 跟move assignment operator。
Move constructor
Mov