Document

なぜ演算子をオーバーロードするの?

演算子に新しい役割をもたせたいから
<< 演算子
新しい
役割
<< 演算子
左オペランドが出力ストリーム
右オペランドが文字列のとき
文字列を出力する
演算子の
オーバー
ロード
左オペランドのデータを
右オペランドで指定されたビット分
左シフトする
5 << 2
00000101
00010100
cout << “hello!!!”;
左オペランドのデータを
右オペランドで指定されたビット分
左シフトする
5 << 2
00000101
00010100
演算子のオーバーロードの例2
+演算子
+演算子
Stringオブジェクトと
Stringオブジェクトを連接
hello
+
friends
hellofriends
演算子の
オーバー
ロード
coordオブジェクトと
coordオブジェクトを加算
o1
10
10
左オペランドのデータと
右オペランドのデータを加算
3+7
o2
+
5
3
15
13
左オペランドのデータと
右オペランドのデータを加算
3+7
+なのに減算した
値が出てきて気
持ち悪いぞ
ちょっとびっくり

+演算子をオーバーロードして
coord coord::operator+(coord ob2)
{
coord temp;
temp.x = x - ob2.x;
temp.y = y - ob2.y;
return temp;
}
o1
o2
10
5
+
10
3
5
7
というように実装することもできるが、本来の使い方と
正反対になり、混乱を招く
演算子の本来の使い方から連想できない
ような実装をしないこと!!