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