Files
Obsidian-Main/02. PARA/03. Resources(資源)/C++17/rvalue.md
Awin Huang 5f5e32ea88 vault backup: 2022-06-09 13:50:26
Affected files:
02. PARA/03. Resources(資源)/C++17/rvalue.md
2022-06-09 13:50:26 +08:00

922 B
Raw Blame History

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

參考