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