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

10 перегрузка

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

10–11

5.5.Перегрузка бинарных операторов

1)ПЕРЕГРУЗКА БИНАРНОГО ОПЕРАТОРА +

class coord {

int x, y; // координаты вектора

public:

coord(int i=0, int j=0)

{

x = i; y = j;

}

10–12

void getxy(int &i, int &j)

{

i = x; j = y;

}

coord operator+(coord ob); };

10–13

coord coord::operator+(coord ob)

{

coord t;

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

}

10–14

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–15

return 0;

}

(o1+o2) x = 15, y = 13

Сцепление вызовов ПО:

o1 + o2 + o3 + o4;

Допустима запись:

(o1 + o2).getxy(x, y);

10–16

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

class coord { int x, y;

public:

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

coord operator-(coord ob); coord operator=(coord ob);

};

10–17

coord coord::operator-(coord ob)

{

coord t;

t.x = x - ob.x; t.y = y - ob.y; return t;

}

10–18

coord coord::operator=(coord ob)

{

x = ob.x; y = ob.y;

//возвращение объекта,

//которому присвоен объект

return *this;

}

10–19

int main()

{

coord o1(10,10), o2(5,3), o3; int x, y;

//вычитание объекта из объекта;

//вызов функции operator–()

o3 = o1 - o2;

// печать разностного объекта

o3.getxy(x, y);

10–20

cout << ”(o1–o2)x = ” << x

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

//присваивание объекта объекту;

//вызов функции operator=()

o3 = o1;

// печать результирующего объекта

o3.getxy(x, y);

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

return 0;

}

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