
10 перегрузка
.pdf
10–21
(o1–o2) x = 5, y = 7 (o3=o1) x = 10, y = 10
Правильно:
t.x = x - ob.x;
Неправильно:
t.x = ob.x - x;
Сцепление вызовов ПО присваивания: o3 = o2 = o1;
10–22
3) ИСПОЛЬЗОВАНИЕ ПАРАМЕТРА-ССЫЛКИ В ФО
coord coord::operator+(coord &ob)
{
coord t;
t.x = x + ob.x; t.y = y + ob.y; return t;
};
10–23
5.6. Перегрузка операторов сравнения и логических операторов
class coord { int x, y;
public: |
|
... |
// см. предыдущий |
пример |
|
int operator==(coord ob); int operator&&(coord ob);
};
10–24
int coord::operator==(coord ob)
{
return x==ob.x && y==ob.y;
}
int coord::operator&&(coord ob)
{
return (x && ob.x) && (y && ob.y);
}
10–25
int main()
{
coord o1(10,10), o2(5,3), o3(10,10), o4(0,0);
if(o1==o2)
cout << ”o1==o2” << endl; else
cout << ”o1!=o2” << endl; if(o1==o3)
cout << ”o1==o3” << endl;
10–26
else
cout << ”o1!=o3” << endl; if(o1&&o2)
cout << ”o1&&o2 = true” << endl; else
cout << ”o1&&o2 = false” << endl; if(o1&&o4)
cout << ”o1&&o4 = true” << endl; else
cout << ”o1&&o4 = false” << endl;

10–27
return 0;
}
o1!=o2
o1==o3 o1&&o2 = true
o1&&o4 = false
10–28
5.7.Перегрузка унарных операторов
1)ПЕРЕГРУЗКА УНАРНОГО ОПЕРАТОРА ++
Пример:
class coord { int x, y;
public:
... // см. предыдущий пример
coord operator++(); };
10–29
coord coord::operator++()
{
x++;
y++;
return *this;
}
10–30
int main()
{
coord ob(10,10); int x, y;
++ob; |
// ПО приращения объекта |
ob.getxy(x, y);
cout << ”(++ob) ” << ”x = ” << x << ”, y = ” << y;
return 0;
}