質問するログイン新規登録

回答編集履歴

2

微修正

2020/07/24 17:50

投稿

Chironian
Chironian

スコア23274

answer CHANGED
@@ -8,6 +8,6 @@
8
8
  左辺値参照と右辺値参照は異なる型ですので、それぞれを受け取る異なる関数を定義できます。それだけの話です。つまり、それぞれの関数の振る舞いを決めるのはあなたなのです。
9
9
 
10
10
  ---
11
- とはいえ本当に自由に書いてしまうとコードが分かりにくくなるので、左辺値参照を受け取る関数はコピー、右辺値参照を受け取る関数はコピーというよりは移動と呼んだ方が妥当な処理を書くことが「強く」推奨されます。(リソースの所有権を移動することが多いです。)
11
+ とはいえ本当に自由に書いてしまうとコードが分かりにくくなるので、左辺値参照を受け取る関数はコピー、右辺値参照を受け取る関数はコピーというよりは移動(リソースの所有権を移動するこが多いです。)と呼んだ方が妥当な処理を書くことが「強く」推奨されます。
12
12
 
13
13
  例えば、get()とset()という関数があったら、一般にget()で値を取り出し、set()で値を設定すると思います。それを逆にする(get()で値を設定し、set()で値を取り出す)ことも可能ですが、本当にそんなコードを書いたら激しく非難されると思います。そのようなものとご理解下さい。

1

微修正

2020/07/24 17:50

投稿

Chironian
Chironian

スコア23274

answer CHANGED
@@ -8,6 +8,6 @@
8
8
  左辺値参照と右辺値参照は異なる型ですので、それぞれを受け取る異なる関数を定義できます。それだけの話です。つまり、それぞれの関数の振る舞いを決めるのはあなたなのです。
9
9
 
10
10
  ---
11
- とはいえ本当に自由に書いてしまうとコードが分かりにくくなるので、左辺値参照を受け取る関数はコピー、右辺値参照を受け取る関数はコピーというよりは移動と呼んだ方が妥当な処理を書くことが「強く」推奨されます。例えば、ヒプ上メモリ管理していクラス(std::unique_ptrなど)同士当該メモリをムーブるような
11
+ とはいえ本当に自由に書いてしまうとコードが分かりにくくなるので、左辺値参照を受け取る関数はコピー、右辺値参照を受け取る関数はコピーというよりは移動と呼んだ方が妥当な処理を書くことが「強く」推奨されます。(リソ所有権移動すことが多いです。)
12
12
 
13
13
  例えば、get()とset()という関数があったら、一般にget()で値を取り出し、set()で値を設定すると思います。それを逆にする(get()で値を設定し、set()で値を取り出す)ことも可能ですが、本当にそんなコードを書いたら激しく非難されると思います。そのようなものとご理解下さい。