Программалау оқулық Алматы, 012 Қазақстан Республикасы Білім жəне ғылым министрлігінің «Оқулық»



Pdf көрінісі
бет188/466
Дата20.07.2022
өлшемі3,66 Mb.
#37798
түріПрограмма
1   ...   184   185   186   187   188   189   190   191   ...   466
if (size != sizeof(pObj)){
::operator delete(ObjToDie); return;
1
Бұл жерде
static_cast
операциясының көмегімен типті тікелей түрде түрлендіру қолданылған. 
Ол туралы «
static_cast
операциясы» бөлімінде, 255 б. айтылады.


211
}
pObj *p = static_cast
(ObjToDie); 

p->next = headOfFree; 
headOfFree = p;
}
delete
операциясында 
new
операциясындағы сияқты объектілер 
көлемдерінің сəйкестігін тексеру орындалған.
Типті келтіру операциясының асыра жүктелуі
Класс объектісін басқа типке түрлендіруді орындайтын функция-операция-
ларды анықтауға болады. Форматы:
operator жаңа_типтің_атауы ();
Қайтарылатын мəн типін жəне параметрді көрсетудің қажеті жоқ. Типтерді 
түрлендірудің виртуалды функцияларын анықтауға болады.
Мысал:
monstr::operator int(){return health;}
...
monstr Vasia; cout << int(Vasia);
Функцияны шақыру операциясының асыра жүктелуі
Функцияны шақыру операциясы анықталған класс функционалды деп ата-
лады. Мұндай кластан басқа өрістер мен əдістердің болуы талап етілмейді:
class if_greater{ 
public:
int operator () (int a, int b) const { 
return a > b;
}
};
Мұндай класты қолданудың синтаксисі ерекше болып келеді. Мысал 
қарастырайық:
if_greater x; cout << х(1, 5) << endl; // Нəтижесі - 0
cout << if_greater()(5, 1) << endl; // Нəтижесі – 1
Мысалдағы 
if_greater
класында екі параметрі бар функцияны 
шақыру операциясы анықталғандықтан
х(1,5)
өрнегін жазуға болады 
(дəл осыны 
х.operator
() (1,5) 
түрінде де жазуға болады). Мысалдан 
көріп отырғанымыздай, функционалды кластың объектісі функция сияқты 
қолданылған. 
Шығару операторының екіншісінде 


Достарыңызбен бөлісу:
1   ...   184   185   186   187   188   189   190   191   ...   466




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

    Басты бет