215
Егер
health
өрісі
public
ретінде жарияланған болса,
онда оған
нұсқауыштың анықтамасы келесідей түрде болатын еді:
int (monstr::*phealth) = &monstr::health;
cout << Vasia.*phealth; // .* операциясын қолдану
cout << p->*phealth; // ->* операциясын қолдану
Класс өрістеріне нұсқауыштар қарапайым нұсқауыштар болмайтынына на-
зар аударыңыз – оларға мəндерді меншіктеген кезде
олар нақты жады адресіне
сілтеме жасамайды, өйткені жады кластар үшін емес, класс объектілері үшін
бөлінеді.
Класс құрамы бойынша ұсыныстар
Кластар құру, олармен жұмыс істеу мысалдарына практикумның [12]
бірінші семинары арналған.
Көбінесе, қолданушы анықтаған тип ретінде
класс құрамында жасырын
(
private
) өрістер жəне келесі функциялар қамтылуы керек:
□ класс объектілерінің калай инициалданатынын анықтайтын
конструк-
торлар;
□ кластың қасиеттерін жүзеге асыратын əдістер жиынтығы (мұндайда
кластың жасырын өрістерінің мəндерін қайтаратын əдістер
const
мо-
дификаторы арқылы сипатталады, бұл модификатор өрістер мəндерінің
өзгертілмейтіндігін көрсетеді);
□
объектілерді көшіруге, меншіктеуге, салыстыруға жəне олармен
кластың қасиеттеріне байланысты басқа да əрекеттерді
орындауға
мүмкіндік беретін
операциялар
жиынтығы;
□ ерекше жағдайларды генерациялау арқылы қателер туралы хабарлама-
лар үшін
пайдаланылатын аластамалар класы (ол туралы 240 б. айты-
латын болады).
Егер класпен немесе бірнеше класпен интерфейс арқылы жұмыс істейтін
(яғни жасырын өрістерге енудің қажеті жоқ) функциялар бар болса, онда
интерфейстерді асыра жүктемеу үшін осы функцияларды
кластан тыс сипаттауға
болады, ал логикалық байланысты қамтамасыз ету үшін оларды осы кластар-
мен ортақ атаулар кеңістігіне орналастыру керек, мысалы:
Достарыңызбен бөлісу: