# Пример класса с конструкторами и перегрузками

```cpp
class coordinate
{
private: 
    int x;
    int y;


public:

    /* ---КОНСТРУКТОРЫ--- */

    coordinate() // конструктор по умолчанию
    {
        x = 0;
        y = 0;
    }

    coordinate(int x, int y) // перегрузка конструктора
    {
        this->x = x;
        this->y = y;
    }

    coordinate(const coordinate& other) // конструктор копирования
    {
        this->x = other.x;
        this->y = other.y;
    }

    ~coordinate(){};  // деструктор


    /* ---МЕТОДЫ--- */

    void SetX(int value) // сеттеры
    {
        x = value;
    }
    void SetY(int value)
    {
        y = value;
    }

    void GetX() // геттеры
    {
        cout << "x = " << x << endl;
    }
    void GetY()
    {
        cout << "y = " << y << endl;
    }


    /* ---ПЕРЕГРУЗКА ОПЕРАТОРОВ--- */

    coordinate& operator=(const coordinate& other) // перегрузка равенства =
    {
        if (this != &other) {
            
            this->x = other.x;
            this->y = other.y;
        }
        return *this;
    }


    bool operator ==(const coordinate& other) // перегрузка ==
    {
        if (this->x == other.x && this->y == other.y)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    bool operator !=(const coordinate& other) // перегрузка !=
    {
        if (this->x != other.x || this->y != other.y)
        {
            return true;
        }
        else
        {
            return false;
        }
    }


    bool operator >(const coordinate &other) // перегрузка >
    {
        if (this->x > other.x && this->y > other.y)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    bool operator <(const coordinate& other) // перегрузка <
    {
        if (this->x < other.x && this->y < other.y)
        {
            return true;
        }
        else
        {
            return false;
        }
    }


    coordinate operator +(const coordinate& other) // перегрузка +
    {
        coordinate temp;
        temp.x = this->x + other.x;
        temp.y = this->y + other.y;
        return temp;
    }
    coordinate operator -(const coordinate& other) // перегрузка -
    {   
        coordinate temp;
        temp.x = this->x - other.x;
        temp.y = this->y - other.y;
        return temp;
    }


    coordinate& operator ++()  // перегрузка префиксного инкремента ++x
    {
        this->x++;
        this->y++;
        return *this;
    }
    coordinate& operator ++(int)  // перегрузка постфиксного инкремента x++
    {   
        coordinate temp(*this);
        this->x++;
        this->y++;

        return temp;
    }
    coordinate& operator --()  // перегрузка префиксного декремента --x
    {
        this->x--;
        this->y--;

        return *this;
    }
    coordinate& operator --(int)  // перегрузка постфиксного декремента x--
    {
        coordinate temp(*this);
        this->x--;
        this->y--;

        return temp;
    }


};
```



