void f(){ A a; // a.count++ түрінде жазуға болмайды, count өрісі // жасырын // Өрісті статикалық əдіс көмегімен өзгерту: a.inc_count(); // немесе A::inc_count(); } Статикалық əдістер тұрақтылық
(
const ) немесе виртуалды
(virtual )
бола алмайды.
Достас функциялар жəне кластар Кейде кластың жасырын өрістеріне тікелей қол жеткізу мүмкіндігі болғаны,
яғни класс интерфейсін кеңейткен жөн. Бұл үшін достас функциялар жəне
достас кластар қызмет етеді.
Достас функциялар Достас функциялар кластың жасырын өрістеріне қол жеткізу үшін
қолданылады жəне олар əдістердің балама түрі (альтернативасы) болып сана-
лады. Əдіс, көбінесе объектінің қасиеттерін жүзеге асыру үшін қолданылады,
ал достас функциялар түрінде класс қасиеттерін көрсетпейтін, бірақ оның
интерфейсіне концептуалды түрде енетін жəне оның жасырын өрістеріне қол
жеткізуді қажет ететін əрекеттер қалыптастырылады, мысалы объектілерді
экранға шығарудың қайта анықталған операциялары (304 б. қараңыз).
Төменде достас функцияларды сипаттау ережелері мен олардың
ерекшеліктері көрсетілген.
□ Достас функция объектілеріне қол жеткізу қажет болатын класс ішінде
friend түйінді сөзі арқылы жарияланады. Параметр ретінде оған объ-
ект немесе класс объектісіне сілтеме берілуі керек, өйткені оған
this нұсқауышы берілмейді.
□ Достас функция əдеттегі функция немесе бұрынырақ анықталған
басқа кластың əдісі болуы мүмкін. Оған қол жеткізу спецификаторла-
203
ры əсер етпейді, оның кластағы жариялану орны да маңызды болып
саналмайды.
□ Бір функция бірден бірнеше кластарға достас болуы мүмкін.
Мысал ретінде төменде