В отличие от оператора
а = b = с = d;
необходимо, чтобы операторная функция
Узелок на память.
Можно также перегружать такие унарные операторы, как
// Перегрузка унарного оператора.
#include
using namespace std;
class three_d {
int x, y, z; // 3-мерные координаты
public:
three_d() { x = у = z = 0; }
three_d(int i, int j, int k) {x = i; у = j; z = k; }
three_d operator+(three_d op2); // Операнд op1 передается неявно.
three_d operator=(three_d op2); // Операнд op1 передается неявно.
three_d operator++(); // префиксная версия оператора ++
void show();
};
// Перегрузка оператора " + ".
three_d three_d::operator+(three_d op2)
{
three_d temp;
temp.x = x + op2.x; // Операции сложения целочисленных
temp.у = у + ор2.у; // значений сохраняют оригинальный
temp.z = z + op2.z; // смысл.
return temp;
}
// Перегрузка оператора присваивания.
three_d three_d::operator=(three_d op2)
{
x = op2.x; // Операции присваивания целочисленных
у = ор2.у; // значений сохраняют оригинальный
z = op2.z; // смысл.
return *this;
}
// Перегруженная префиксная версия оператора "++".
three_d three_d::operator++()
{
х++; // инкремент координат х, у и z
у++;
z++;
return *this;
}
// Отображение координат X, Y, Z.
void three_d::show()
{
cout << x << ", ";
cout << у << ", ";
cout << z << "\n";
}
int main()
{
three_d a(1, 2, 3), b(10, 10, 10), c;
a.show();
b.show();
с = a + b; // сложение объектов а и b
c.show();
c=a+b+c; // сложение объектов a, b и с
с.show();
с = b = a; // множественное присваивание
с.show();
b.show();
++c; // инкремент с
c.show();
return 0;
}
Эта версия программы генерирует такие результаты.
1, 2, 3
10, 10, 10
11, 12, 13
22, 24, 26
1, 2, 3
1, 2, 3
2, 3, 4