#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++ (Объектно-ориентированное программирование)

