なぜ演算子をオーバーロードするの? 演算子に新しい役割をもたせたいから << 演算子 新しい 役割 << 演算子 左オペランドが出力ストリーム 右オペランドが文字列のとき 文字列を出力する 演算子の オーバー ロード 左オペランドのデータを 右オペランドで指定されたビット分 左シフトする 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 というように実装することもできるが、本来の使い方と 正反対になり、混乱を招く 演算子の本来の使い方から連想できない ような実装をしないこと!!
© Copyright 2024 ExpyDoc