Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Полиморфизм. Операторларды Қайта жҮктеу.






Жұ мыс мақ саты: Операторларды қ айта жү ктеу механизмімен таныстыру.

 

I. Қ ысқ аша теориялық мә ліметтер

Операторларды қ айта жү ктеу.

Операторларды қ айта жү ктеу С++-тегі стандартты типтерге жаң а типтер қ осуғ а мү мкіндік береді. Операторларды қ айта жү ктеу достық функциялар сияқ ты хабарланады.

 

class ZZ {

public:

friend ZZ operator+(ZZa, ZZb);

friend ZZ operator-(ZZa, ZZb);

friend ZZ operator*(ZZa, ZZb);

friend ZZ operator/(ZZa, ZZb);

};

 

Функция аттары – operator/, operator*, operator-, operator+ operator кілттік сө зінен жә не оператор символынан тұ рады.

 

Қ айта жү ктеуге болатын операторлар тізімі:

 

* / + – % ^ &:

 

-!, = < > < = > =

 

++ — < < > > ==! = & & ||

 

*= /* %= ^= & = |= += -=

 

< < = > > = -> -> * [] () new delete

 

Программа 1. Достық функциялар кө мегімен операторларды қ айта жү ктеу мысалы.

#include < iostream.h>

#include < stdlib.h>

#include < string.h>

class TStrOp {

private:

char val[12];

public:

TStrOp() { val[0]=0; }

TStrOp(const char* s);

long GetVal(void) { return atol(val); }

friend long operator+(TStrOp a, TStrOp b);

friend long operator-(TStrOp a, TStrOp b);

};

void main()

{

TStrOp a = " 1234";

TStrOp b = " 4321";

cout < < endl < < " value of a == " < < a.GetVal();

cout < < endl < < " value of b == " < < b.GetVal();

cout < < endl < < " a + b + 6 == " < < (a + b + 6);

cout < < endl < < " a – b + 10 == " < < (a – b + 10)

< < endl;

}

TStrOp:: TStrOp(const char* s)

{

strncpy(val, s, 11);

val[11]=0;

}

long operator+(TStrOp a, TStrOp b)

{

return (atol(a.val) + atol(b.val));

}

long operator-(TStrOp a, TStrOp b)

{

return (atol(a.val) – atol(b.val));

}

 

class TStrOp {

private:

char val[12];

public:

TStrOp() { val[0]=0; }

TStrOp(const char* s);

long GetVal(void) { return atol(val); }

long operator+(TStrOp a, TStrOp b);

long operator-(TStrOp a, TStrOp b); };

long TStrOp:: operator+(TStrOp b)

{ return (atol(val) + atol(b.val)); }

long TStrOp:: operator-(TStrOp b)

{ return (atol(val) – atol(b.val)); }

 

Программа 2. Индекстеуді қ айта жү ктеу мысалы.

 

#include < iostream.h>

class Psevdoarray {

private:

int val0;

int val1;

int val2;

int val3;

public:

Psevdoarray(int v0, int v1, int v2, int v3)

{ val0 = v0; val1 = v1; val2 = v2; val3 = v3; }

int GetInt(unsigned i);

int operator[] (unsigned i);

};

void main()

{

Psevdoarray pa(10, 20, 30, 40);

for(int i=0; i< =3; i++)

cout < < " pa[" < < i < < " ] ==" < < pa[i] < < endl;

}

int Psevdoarray:: GetInt(unsigned i)

{

switch (i) {

case 0: return val0;

case 1: return val1;

case 2: return val2;

case 3: return val3;

default: return val0;

}

}

int Psevdoarray:: operator[](unsigned i)

{

return GetInt(i);

}

 

ІІ. Жұ мыстың орындалу реті

1. Теориялық бө ліммен танысу.

2. 1 – 2 программалардың жұ мысымен танысу.

3. Ө зіндік жұ мыс тапсырмаларын орындаң ыз.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.