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


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



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

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

  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
әкімшілігінің қараңыз

    Басты бет