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