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



Pdf көрінісі
бет187/465
Дата09.01.2023
өлшемі3,66 Mb.
#60709
түріПрограмма
1   ...   183   184   185   186   187   188   189   190   ...   465
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   ...   183   184   185   186   187   188   189   190   ...   465




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

    Басты бет