206
Унарлы операциялардың асыра жүктелуі
Класс ішінде анықталатын унарлы функция-операция
статикалық емес
əдістің көмегімен параметрсіз түрде берілуі керек,
мұнда операнд ретінде оны
шақырған объект қабылданады, мысалы:
class monstr{
...
monstr & operator ++() {++health; return *this;}
}
monstr Vasia;
cout << (++Vasia).get_health();
Егер
функция кластан тыс анықталатын болса, оның құрамында класс
типіндегі бір параметр болуы тиіс:
class monstr{
...
friend monstr & operator ++( monstr &M);
};
monstr& operator ++(monstr &M) {++M.health; return M;}
Егер класс ішіндегі функцияны достас ретінде сипаттамайтын болсақ,
өзгертілетін өрістердің қол жетімділігін ескеру керек.
Берілген жағдайда
health
өрісіне сырттан қол жеткізуге болмайды,
өйткені ол
private
спе-
ци-фикаторы арқылы сипатталған, сондықтан оны өзгерту үшін соған сəйкес
əдіс қолдану қажет болады. monstr
класының сипаттамасына
change_health
əдісін енгіземіз, ол
health
өрісінің мəнін өзгертуге мүмкіндік береді:
void change_health(int he){ health = he;}
Осылай болса, инкремент операциясын кластан
тыс сипатталған қарапайым
функция көмегімен асыра жүктеуге болады:
monstr& operator ++(monstr &M){
int h = M.get_health(); h++; M.change_health(h);
return M; }
Постфикстік инкремент жəне декремент операцияларының алғашқы
параметрінің типі
Достарыңызбен бөлісу: