![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Полиморфизм. Операторларды Қайта жҮктеу.
Жұ мыс мақ саты: Операторларды қ айта жү ктеу механизмімен таныстыру.
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. Ө зіндік жұ мыс тапсырмаларын орындаң ыз.
|