演算子のオーバーロード

ベクトルの加算ができるよう、operatorキーワードを使って加算演算子(+)をオーバーロードしてみる。

#include <stdio.h>
class Vect {
private:
    double x, y; // 座標を格納するメンバー変数
public:
    // コンストラクター
    Vect(double x, double y) {
        this->x = x;
        this->y = y;
    }

    // 各座標のゲッター
    double getX() {return this->x;}
    double getY() {return this->y;}

    // 演算子をオーバーロードする。型 operatorキーワード 演算子(const 型 参照渡し引数) {処理の内容}
    Vect operator +(const Vect &v) {
        Vect ans(this->x + v.x, this->y + v.y); // 各座標を足して返す。
        return ans;
    }
};

int main() {
    Vect a(0, 1);
    Vect b(1, 0);
    Vect c = a + b;
    printf("%f %f\r\n", c.getX(), c.getY());
    return 0;
}

f:id:ti-nspire:20190516045517p:plain
――――――――――――――――――――――――――――――――――
f:id:ti-nspire:20190516045636p:plain