CCCPaste

Untitled

#include 
#include 

using namespace std;

class Point {
private:
    int x, y;
public:
    Point() {}
    Point(int _x, int _y) {
        x = _x;
        y = _y;
    }
    ~Point() {}
    void print() {
        cout << x << " " << y << endl;
    }
    Point operator + (Point p) {
        Point temp;
        temp.x = x + p.x;
        temp.y = y + p.y;
        return temp;
    }
    Point operator - (Point p) {
        Point temp;
        temp.x = x - p.x;
        temp.y = y - p.y;
        return temp;
    }
    Point operator * (Point p) {
        Point temp;
        temp.x = x * p.x;
        temp.y = y * p.y;
        return temp;
    }
    Point operator / (Point p) {
        Point temp;
        temp.x = x / p.x;
        temp.y = y / p.y;
        return temp;
    }
    bool operator < (Point p) {
        if(x < p.x and y < p.y) {
            return true;
        }
        return false;
    }
    bool operator > (Point p) {
        if(x > p.x and y > p.y) {
            return true;
        }
        return false;
    }
    bool operator <= (Point p) {
        if(x <= p.x and y <= p.y) {
            return true;
        }
        return false;
    }
    bool operator >= (Point p) {
        if(x >= p.x and y >= p.y) {
            return true;
        }
        return false;
    }
    bool operator == (Point p) {
        if(x == p.x and y == p.y) {
            return true;
        }
        return false;
    }
    bool operator != (Point p) {
        if(x == p.x and y == p.y) {
            return true;
        }
        return false;
    }
    Point& operator += (Point p) {
        x += p.x;
        y += p.y;
        return *this;
    }
    Point& operator -= (Point p) {
        x -= p.x;
        y -= p.y;
        return *this;
    }
    Point& operator *= (Point p) {
        x *= p.x;
        y *= p.y;
        return *this;
    }
    Point& operator /= (Point p) {
        x /= p.x;
        y /= p.y;
        return *this;
    }
    Point& operator ++ (int p) { //postfix
        x++;
        y++;
        return *this;
    }
    Point& operator ++ () { // prefix
        ++x;
        ++y;
        return *this;
    }
    Point& operator -- (int p) { //postfix
        x--;
        y--;
        return *this;
    }
    Point& operator -- () {
        --x;
        --y;
        return *this;
    }
};

int main()
{
    
    
    Point p1(2, 5);
    Point p2(1, 5);
    
    --p1;
    
    p1.print();
    return 0;
}