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


тип operator операция ( параметрлер тізімі ) {



Pdf көрінісі
бет181/465
Дата09.01.2023
өлшемі3,66 Mb.
#60709
түріПрограмма
1   ...   177   178   179   180   181   182   183   184   ...   465
Байланысты:
аибм сплюс

тип operator операция ( параметрлер тізімі ) { 
функция тұлғасы 
}
1
Ерекше жағдай: алғашқы параметрі стандартты типте болатын функция-операция класс əдісі ретінде 
анықтала алмайды.


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; }
Постфикстік инкремент жəне декремент операцияларының алғашқы 
параметрінің типі


Достарыңызбен бөлісу:
1   ...   177   178   179   180   181   182   183   184   ...   465




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

    Басты бет