Skip to content

Commit

Permalink
feat: 在 rule of 3/5/0 增加对调用 std::move 的解释
Browse files Browse the repository at this point in the history
  • Loading branch information
FeignClaims authored Sep 23, 2024
1 parent b7f0711 commit f8b36dd
Showing 1 changed file with 2 additions and 1 deletion.
3 changes: 2 additions & 1 deletion faq/rule_of_350/main.rst
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,7 @@ rule of 3/5/0: 要么不定义任何特殊函数, 要么定义它们全部

:doc:`/faq/dynamic_array/main` 和 :doc:`/faq/forward_list/main` 的扩展部分, 我都有介绍如何为它们定义移动函数.

假设小明、小刚合租房子而只有一把钥匙, 移动就是小明将钥匙交给小刚, 而拷贝则是小刚拿小明的钥匙再去配一把钥匙. 我们在上方定义的文件资源由于其所有权独占性而不能拷贝, 但可以用移动将它移动给另一个 :cpp:`Input_file` 对象.
假设小明、小刚合租房子而只有一把钥匙, 移动就是小明将钥匙交给小刚, 而拷贝则是小刚拿小明的钥匙再去配一把钥匙. 我们在上方定义的文件资源由于其所有权独占性而不能拷贝, 但可以用移动 (move) 将它交给另一个 :cpp:`Input_file` 对象.

.. code-block:: cpp
:linenos:
Expand All @@ -266,6 +266,7 @@ rule of 3/5/0: 要么不定义任何特殊函数, 要么定义它们全部
int main() {
Input_file file1("text.txt");
// ↓ 指明我们要移动 file1
Input_file file2(std::move(file1));
// 移动后预期:
// - file2 占有 "text.txt"
Expand Down

0 comments on commit f8b36dd

Please sign in to comment.