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)
түрінде де жазуға болады). Мысалдан
көріп отырғанымыздай, функционалды кластың
объектісі функция сияқты
қолданылған.
Шығару операторының екіншісінде
Достарыңызбен бөлісу: