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

10 перегрузка

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

10–41

// ПО для операции ob + int

coord operator+(coord ob, int i)

{

coord t;

t.x = ob.x + i; t.y = ob.y + i; return t;

}

10–42

// ПО для операции int + ob

coord operator+(int i, coord ob)

{

coord t;

t.x = i + ob.x; t.y = i + ob.y; return t;

}

10–43

int main()

{

coord o1(10,10), o2(10,10); int x, y;

o1 = o1 + 10; // объект + ЦЧ

o1.getxy(x, y);

cout << ”(o1+10) ” << ”x = ” << x

<<

”, y = ” << y << endl;

o2 = 10

+ o2;

// ЦЧ + объект

10–44

o2.getxy(x, y);

cout << ”(10+o2) ” << ”x = ” << x << ”, y = ” << y;

return 0;

}

(o1+10) x = 20, y = 20

(10+o2) x = 20, y = 20

10–45

2) ПЕРЕГРУЗКА УНАРНЫХ ОПЕРАТОРОВ

Пример:

class coord { int x, y;

public:

... // см. предыдущий пример

friend coord operator++(coord &ob); };

10–46

coord operator++(coord &ob)

{

ob.x++;

ob.y++;

//возвращение объекта, являющегося

//источником вызова

return ob;

}

10–47

int main()

{

coord o1(10,10); int x, y;

++o1; // объект o1 передается по ссылке

o1.getxy(x, y);

cout << ”(++o1) ” << ”x = ” << x << ”, y = ” << y;

return 0;

}

10–48

(++o1) x = 11, y = 11

10–49

5.9. Перегрузка оператора индекса массива

Оператор [](индекс массива) можно перегружать только в виде ФЭ класса:

тип имя_класса::operator[](int индекс)

{

// тело ф-ции

}

10–50

Пусть объект ob индексируется как ob[9].

Тогда выполняется вызов ФО:

ob.operator[](9);

ФО с именем operator[] получает выражение, заданное в [], как параметр.

Внутри ФО указатель this ссылается на

объект ob, являющийся источником вызова.

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