10 перегрузка
.pdf10–31
(++ob) x = 11, y = 11
ПО может быть частью составных операторов: o2 = ++o1; .
10–32
2) ПЕРЕГРУЗКА УНАРНОГО ОПЕРАТОРА “МИНУС“
Пример:
class coord { int x, y;
public:
... // см. предыдущий пример
coord operator-(); };
10–33
coord coord::operator-()
{
x = -x; y = -y;
return *this;
}
10–34
int main()
{
coord ob(10,10); int x, y;
ob = -ob; // ПО отрицания
ob.getxy(x, y);
cout << ”(–ob) x = ” << x << ”, y = ” << y;
return 0;
}
10–35
(-ob) x = -10, y = -10
10–36
5.8.ФО в виде функции-друга класса
1)ПЕРЕГРУЗКА БИНАРНОГО ОПЕРАТОРА +
Пример:
class coord { int x, y;
public:
... // см. предыдущий пример
friend coord operator+(coord ob1, coord ob2);
};
10–37
coord operator+(coord ob1, coord ob2)
{
coord t;
t.x = ob1.x + ob2.x; t.y = ob1.y + ob2.y; return t;
}
10–38
int main()
{
coord o1(10,10), o2(5,3), o3; int x, y;
// вызов ФО operator+()
o3 = o1 + o2;
// печать суммарного объекта
o3.getxy(x, y);
cout << ”(o1+o2) x = ” << x << ”, y = ” << y;
10–39
return 0;
}
(o1+o2) x = 15, y = 13
10–40
Пример:
class coord { int x, y;
public:
...
// см. предыдущий пример
friend coord operator+(coord ob, int i); friend coord operator+(int i, coord ob);
};