C++の基礎 : 演算子
演算子
C 言語では演算子を独自に定義することはできませんでしたが、C++ 言語では独自の演算子を定義することができます。
たとえば、2次元の座標系の点を表す Point というクラスについて考えてみましょう。
class Point { public: SIntN x; SIntN y; Point() {} // 初期化は何もしない Point(SIntN x0, SIntN y0) { x = x0; y = y0; } Point operator + (const Point& p0) const { Point p1; p1.x = x + p0.x; p1.y = y + p0.y; return p1; } };
この Point クラスでは operator + という名前のメンバ関数によって、+ 演算子を定義しています。この関数は引数に Point を受け取り、Point を返していますから、次のような使い方ができます。
Point p(10, 20); Point q(3, 4); Point r = p + q; // r.x = 13, r.y = 24 になる
C++ 言語では、+ 演算子の他にも- * / == != & | ~ ^ >> << -> new delete など多くの演算子を定義できます。
【Java では】Java では演算子を独自に定義することはできません。
この章のまとめ
- クラスに「operator+演算子」という名前のメンバ関数を定義することで、 クラスに対する演算子を定義できます。
やってみよう
次のようなコードを実行してみましょう!
+ 演算子は正しく計算しているでしょうか? 他の演算子も定義して使ってみましょう。
Void TestOperator(Void) { Point p(10, 20); Point q(3, 4); Point r = p + q; SFXHelper::dbgprintf("r.x=%d, r.y=%d", r.x, r.y); }