Affected files: .obsidian/workspace 02. PARA/03. Resources(資源)/C++17/rvalue.md
18 lines
699 B
Markdown
18 lines
699 B
Markdown
- 等號右邊的值
|
||
- 臨時的值,例如運算的結果
|
||
- 無法被取址(address-of)的物件
|
||
|
||
# rvalue參考
|
||
可以用`&&`來參考rvalue。例如:
|
||
```
|
||
int c{5};
|
||
int&& rtepm {c + 3};
|
||
```
|
||
|
||
關於lvalue、rvalue的分別可以參考[Value categories - cppreference.com](https://en.cppreference.com/w/cpp/language/value_category),或是[rvalue 參考](https://openhome.cc/Gossip/CppGossip/RvalueReference.html)等文章。這邊講用法跟好處。
|
||
rvalue reference可以減少無間的複製成本。例如:
|
||
```cpp
|
||
std::string longStr = "qwertyuiopasdfghjklzxcbnm";
|
||
std::string anotherLong = longStr;
|
||
```
|
||
這時longStr會被複製一份anotherLong,把longStr換成很大的buffer, |