Объект өрістерін инициализациялау
С++ ережесі бойынша егер компоненттік функция денесі класс сипаттамасында орналасқан болса, онда бұл функция іштестірілген (inline) болып саналады. Төменде келтірілген мысалда кластың компоненттік функциялары үнсіз жағдайда іштестірілген болады.
#include
#include
Class x
{private:char c;
Public:int x,y;
Void print(void)
{clrscr();
goto(x,y);
printf(“%c”,c);
x=x+10; y+y+5; goto(x,y);
Printf(“%c”,c);
}
Void set_x(char ach, int ax, int ay)
{c=ach; a=ax; y=ay; }
};
Іштестірілген компоненттік функцияларды кластан бөлек те сипаттауға болады. Ол үшін функция басына inline қызметші сөзін қосу керек. Компоненттік функцияларды анықтау кезінде келесі функцияларды іштестірілген ретінде алуға рұқсат етілмеуін ескеру қажет:
циклді, ассемблерлік қоюларды, ауыстырғыштарды қамтитын функциялар;
рекурсивті функциялар;
вертуальді функциялар;
Класты анықтауды программа текстінен бұрын орындауға болады не болмаса бөлек файлға жазып, оны программаға #include дерективасы көмегімен қосуға болады. Жазылуы: #include <файл аты>
Бұрын анықталған кластарды қолдану программада қажет жағдайда класс объектілері хабарлайды, мұндай хабарлау келесі түрде болады:
<класс аты> <объектілер немесе көрсеткіштер тізімі>
Класс өрістерін хабарлаған кезде оларды инициялизациялау мүмкін емес. Себебі, өрісті сипаттау кезінде оның орналасуы үшін жады бөлінбейді. Оның бөлінуі – класс үшін емес, класс объектілері үшін орындалады.
Сондықтан, өрістің инициализациясы тек нақты класс оъектілерін хабарлағаннан кейін мүмкін болады. Объект өрісіне мән беру программасын орындау барысында бірнеше әдістерді іске асырады:
объект өрісіне тікелей мән меншіктеу
қолданылып отырған кластың кез-келген компонентті функциясы ішінде
С++ ережесіне сәйкес инициализациялау операторының қолданылуы
Жоғарыда келтірілген әдістер тек Public секциясында сипатталған өрістерді инициализациялауға қолданылады.
Private және Pratected секциясында сипатталған өрістерді инициализациялау тек компоненттік функциялар көмегімен жүзеге асырылады.
This көрсеткіші
Егер функция – нақты объектінің мәліметтерін өңдеу үшін шақыратын болса, онда бұл функция көрсеткіші автоматты түрде функция шақырған объектіге беріледі. Бұл көрсеткіш This деп аталады және класс функциясында мына түрде сипатталады:
<Класс_аты> * const this = <объект_адресі>;
This көрсеткіші әрбір статикалық емес компонентті функцияның қосымша жасырын параметрі болып табылады. Класқа тиісті функцияның денесіне кіру кезінде – this көрсеткіші функция шақырған объект адресінің мәні ретінде инициялизациялайды. Нәтижесінде бұл объект функцияның ішінде қол жетімді болып таблады.
Көп жағдайда this көрсеткіші нақты түрде қолданылады. Кластың статикалық емес функциясының әрбір мүшелеріне this көрсеткіші – сәйкес объектіге кіру үшін қолданылады.
Достарыңызбен бөлісу: |