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


Бинарлы операторларды қайта анықтау



бет23/112
Дата22.12.2021
өлшемі0,85 Mb.
#127596
түріПрограмма
1   ...   19   20   21   22   23   24   25   26   ...   112
Байланысты:
ооп лекция
қорытынды атт 11.03.21, қорытынды атт 11.03.21, эссеге керек
4. Бинарлы операторларды қайта анықтау

Класс ішінде анықталатын бинарлы функция-операторлар параметрлерсіз тұрақты емес әдістің көмегімен көрсетілуі керек, бұл кезде оны шақырған обьект бірінші операнд болып табылады:

Class monstr {

bool operator > (const monstr &M) {



If (health> M.health) return true;

Return false;

}

};

Егер функция класстан тыс анықталатын болса, ол класс типінің екі параметріне ие болу керек:



bool operator >(const monstr &M1,const monstr &M2) {

if(M1.get_health() > M2.get_health()) return true;

return false;

}

5. Меншіктеу операторларын қайта анықтау

Меншіктеу операторы жасырын түрде кез-келген класста элемент бойынша көшіру ретінде анықталған. Бұл операция әркез бір обьектіге екіншісінің мағынасын меншіктеген кезде шақырылады. Егер класста жады динамикалық түрде көрсетілетін жолдарға ие болса, онда меншіктеудің өзіндік операциясын анықтау керек. Меншіктеу семантикасын сақтап қалу үшін оператор-функция сілтемені ол шақырылған обьектіге қайтарып және параметр ретінде жалғыз ғана аргумент- меншіктелетін обьектіге сілтемені қабылдау керек.

const monstr& operator = (const monstr &M) {

/ / Өзіне меншіктеп алуды тексеру:

if (&M == this) return *this;

if (name) delete [ ] name;

if (M.name) {

name = new char [strlen(M.name) + 1];

strcpy(name, M.name); }

else name = 0;

health = M.health: ammo = M.ammo; skin =M.skin;

return *this;

}

Функциядан сілтегіштің обьектіге қайтуы меншіктеу операторының тізбегін жасайды:



monstr A(10), B, C;

C =B = A;

Меншіктеу операторын тек класс әдісі ретінде ғана анықтауға болады. Ол мұраға берілмейді.



Достарыңызбен бөлісу:
1   ...   19   20   21   22   23   24   25   26   ...   112




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

    Басты бет