Дістемелік кешен


Лабораторялық жұмыс бойынша сұрақтар



бет73/112
Дата22.12.2021
өлшемі0,85 Mb.
#127596
түріПрограмма
1   ...   69   70   71   72   73   74   75   76   ...   112
Байланысты:
ооп лекция
қорытынды атт 11.03.21, қорытынды атт 11.03.21, эссеге керек
Лабораторялық жұмыс бойынша сұрақтар

  1. Қандай функциялар достық деп аталады?

  2. Достық класстар дегеніміз не?

  3. Достық кластар қалай анықталады?

  4. Достық функциялар қалай анықталады?


ЛАБОРАТОРИЯЛЫҚ ЖҰМЫС № 9-11

ПОЛИМОРФИЗМ. ОПЕРАТОРЛАРДЫ ҚАЙТА ЖҮКТЕУ.
Жұмыс мақсаты: Операторларды қайта жүктеу механизмімен таныстыру.


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

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

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


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

#include

#include

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

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   ...   69   70   71   72   73   74   75   76   ...   112




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет