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

回答編集履歴

2

ちょっと修正

2022/03/07 02:16

投稿

fana
fana

スコア12229

answer CHANGED
@@ -3,9 +3,19 @@
3
3
  それは `operator +=` だったのではないだろうか? ……とか思います.
4
4
 
5
5
  演算子のオーバーロードは特にその字面と異なる動作が実装されていると「???」って混乱する元になりますので,
6
- 特殊な理由が無いならふつーの(intみたいな)型と同様に書けるように」のが良いでしょう.
6
+ 特殊な理由が無いならふつーの(intみたいな)型と同様の意味を持つ処理にしてお良いでしょう.
7
7
  ( `a+b` って書いてるの見て, a の中身が変わるとは思わないよね.)
8
8
 
9
+ また,ごく普通に演算子を使う式を書いてたら「それこの型には書けないから.残念.」とか言われると不便なので,
10
+ これもまた,特殊な理由が無いならば,ふつーの型と同様に処理を書ける形に実装しておくと良いでしょう.
11
+ 例えば int 等では以下のように書けますが,自身の型での演算でこれを禁止する理由が特に無いならば,これができる方が素直というか.
12
+
13
+ ```C++
14
+ int a = 5;
15
+ int b = (a+=5) + 7; //operator+= が aへの参照 を返してくれないとこれができない
16
+ ```
17
+
18
+
9
19
  ---
10
20
 
11
21
  `return *this;` を書く話については,

1

要らん文字を削除

2022/03/07 02:09

投稿

fana
fana

スコア12229

answer CHANGED
@@ -3,7 +3,7 @@
3
3
  それは `operator +=` だったのではないだろうか? ……とか思います.
4
4
 
5
5
  演算子のオーバーロードは特にその字面と異なる動作が実装されていると「???」って混乱する元になりますので,
6
- 特殊な理由が無いなら「ふつーの(? intみたいな)型と同様に書けるようにしとく」のが良いでしょう.
6
+ 特殊な理由が無いなら「ふつーの(intみたいな)型と同様に書けるようにしとく」のが良いでしょう.
7
7
  ( `a+b` って書いてるの見て, a の中身が変わるとは思わないよね.)
8
8
 
9
9
  ---