Перегрузка операторов C++ ООП

 
#include <iostream>
using namespace std;

class Coordinates {
    int _x, _y, _z;
public:
    Coordinates() { _x = _y = _z = 0; }
    Coordinates(int a, int b, int c) {
        _x = a;
        _y = b;
        _z = c;
    }
    Coordinates operator+(Coordinates ob);
    Coordinates operator=(Coordinates ob);
    Coordinates operator++(); // префиксная форма
    Coordinates operator++(int post); // постфиксная
    void operator+=(Coordinates); // obj+=obj1 операция арифметического присваивания
    Coordinates operator+(Coordinates) const; // obj=obj1+obj2 операция сложения
    bool operator<(Coordinates) const; // obj1<obj2
    void show() { cout << _x << "  " << _y << "  " << _z << endl; }
};
Coordinates Coordinates::operator+(Coordinates ob) {
    Coordinates temp;
    temp._x = _x + ob._x;
    temp._y = _y + ob._y;
    temp._z = _z + ob._z;
    return temp;
};
// возвращает модифицированный объект
Coordinates Coordinates::operator=(Coordinates ob) {
    _x = ob._x;
    _y = ob._y;
    _z = ob._z;
    return *this;
};

Coordinates Coordinates::operator++() {
    _x++;
    _y++;
    _z++;
    return *this;
};
/*
Coordinates Coordinates::operator++()
{
++_x;
++_y;
++_z;
Coordinates temp;
temp._x = _x;
temp._y = _y;
temp._z = _z;
return temp;
}
*/
Coordinates Coordinates::operator++(int val) {
    Coordinates temp = *this;
    _x++;
    _y++;
    _z++;
    return *this;
};

Coordinates Coordinates::operator+(Coordinates obj) const {
    int a = _x + obj._x;
    int b = _y + obj._y;
    int c = _z + obj._z;
    return Coordinates(a,b,c);
}

void Coordinates::operator+=(Coordinates obj) {
    _x +=obj._x;
    _y += obj._y;
    _z += obj._z;
}

bool Coordinates::operator<(Coordinates obj) const {
    int a = obj._x+ obj._y;
    int b = obj._z;
    return (a < b) ? false : true;
}


void main()
{
    setlocale(LC_ALL, "Rus");

    Coordinates a(3, 4, 5), b(7, 5, 9), c;
    a.show(); // 3 4 5
    b.show(); // 7  5 9
    c = a + b;
    c.show(); // 10 9 14
    c = b = a;
    b.show(); // 3 4 5
    ++b;
    b.show(); // 4 5 6
    b++;
    b.show(); // 5 6 7
    //c= ++b;
    //b = a + c;
    //a < b;
   //a += c;
    system("pause");
}

Результата работы программы — Перегрузка операторов на C++ (Объектно-ориентированное программирование)

201

Leave a Reply

Ваш адрес email не будет опубликован.