overload

e.g.1

#include <iostream>

class Base2d {
    int x,y;
public:
    Base2d():x(0),y(0){}
    Base2d(int _x, int _y):x(_x), y(_y){}
    int GetX() const { return x; }
    void SetX(int d) { x=d; }
    int GetY() const { return y; }
    void SetY(int d) { y=d; }
};

Base2d operator+(const Base2d& a, const Base2d& b)
{
    Base2d temp(a.GetX()+b.GetX(), a.GetY()+b.GetY());
    return temp;
}

Base2d operator-(const Base2d& a, const Base2d& b)
{
    Base2d temp(a.GetX()-b.GetX(), a.GetY()-b.GetY());
    return temp;
}

Base2d operator*(const Base2d& a, const Base2d& b)
{
    Base2d temp(a.GetX()*b.GetX(), a.GetY()*b.GetY());
    return temp;
}

Base2d operator/(const Base2d& a, const Base2d& b)
{
    Base2d temp(a.GetX()/b.GetX(), a.GetY()/b.GetY());
    return temp;
}

int main(void)
{
    Base2d plane1(10, 20), plane2(30, 40);

    Base2d plane=plane1+plane2;
    std::cout << "operator+" << std::endl;
    std::cout << plane.GetX() << std::endl;
    std::cout << plane.GetY() << std::endl;

    plane=plane1-plane2;
    std::cout << "operator-" << std::endl;
    std::cout << plane.GetX() << std::endl;
    std::cout << plane.GetY() << std::endl;

    plane=plane1*plane2;
    std::cout << "operator*" << std::endl;
    std::cout << plane.GetX() << std::endl;
    std::cout << plane.GetY() << std::endl;

    plane=plane1/plane2;
    std::cout << "operator/" << std::endl;
    std::cout << plane.GetX() << std::endl;
    std::cout << plane.GetY() << std::endl;

    return 0;
}

–ß‚é