Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

10 перегрузка

.pdf
Скачиваний:
22
Добавлен:
27.03.2015
Размер:
414.07 Кб
Скачать

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;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]