Программирование >>  Расширенная версия языка c++ 

1 ... 178 179 180 [ 181 ] 182 183 184 ... 227


Приложение В. Ответы на вопросы и решения упрJажнений 549

coord temp;

temp.x 1,х * i; temp, у = оЫ.у * i;

return temp;

Перегрузка оператора вторым способом

coord operator* (int i, coord оЬ2)

coord temp;

temp.x = ob2.x * i; temp . у 2 . у * i ;

return temp;

coord

int X, y;

io2 1 * 2; ob * int o2.get xy(x, y) ;

cou (ol * 2) , у \n ;

o2 = 3 * ol; int * ob o2.get xy (x, y) ?

cou (3 * ol) у Nn ;

return

3. Благодаря использованию дружественные -функций, стало возможным получить, в качестве левого операнда, встроенный тип данных. При использовании функций-членов, левый операнд должен быть объектом класса, для которого определяется оператор.

4. /* Перегрузка оператора оттельно класса coord с использованием дружественных функций

#include <iostream>

using namespace std; class coord {

int x, у; значения координат public:

coord О { x = 0; у = 0; }



550 ,. .. ... Самоучитель С++

coorddnt i, int j) { x = i; у = j; }

void get xy(int si, int sj) { i = x; j = y; }

префиксная форма

friend coord operator- [coord sob) ; .

постфиксная форма

friend coord operator- (coord Sob, int notused) ;

Перегрузка префиксной формы оператора - для класса coord с использованием дружественной функции coord operator- (coorci t,vjjj} (

ob.x-;

ob.y -; . .

return

Перегрузка постфиксной формы оператора - для класса coord с использованием функции

coord operator- (coord Sob, int notused)

ob.x - ; ob.y-;

return ob; .

}

\ *

coord ol(10, 10) ;

int x, y; ...

декремент объекта

ol.get xy (X,y) ;

cou (--ol) x , у \n ;

декремент объекта ol

ol.get xy (X, y) ; .

cou Mol-) x , у \n ;

return

1. ttinclude <iostream> #include <c,3tdlib>

using namespace std;



Приложение В. Ответы на вопросы ения упражнений 551

class dynarray {

int *р; . ;

int size; public:

dynarray(int s);

int get(int i) ;

dynarray uoperator={dynarray SOb) ;

Конструктор

p = new int[sj;

if(!p) {

cou Обка выделения памяти\п ; exit(l) ;

Size s;

Запоминание элемента int i)

if (i<0 I I i>=size) (

cou Обка нарушения границ массива !\n ; exit(l);

return

Получение элемента int i)

if (i<0 I I i>=si (

cou << Обка нарушения границ массива !\n ; exit(l);

return

Перегрузка оператора - для класса dynarray dynarrayfidynarray::operator(dynarrayiob)

int i; .;.- .



1 ... 178 179 180 [ 181 ] 182 183 184 ... 227

© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика