Тақырыбы: Достық функциялар және кластар
Дәріс мақсаты: достық функция және класс туралы түсінік беру, бағдарлама құру кезінде достық функцияларды қолдану.
Кілттік сөздер: достық функция; достық класс; класс компоненттері; қорғалған компоненттер; қатынау рұқсаты.
Жоспар:
Достық функциялар және кластар
Достық функциялар және кластар
Осы уақытқа дейін айтылып келгендей қатынауды басқару механизмін орындауға кластың жалпы, қорғалған және ішкі компоненттері мүмкіндік береді. Ішкі компоненттері класс ішінде ғана қол жетімді, ал қорғалған компоненттері кластың компонентті функцияларына және оның мұрагерлеріне ғана қол жетімді. Осылайша кластың ішкі және қорғалған компоненттеріне қатынаудың шектелуі тым қатал болуы мүмкін. Бұл басқа кластардан мұрагерлену мүмкіндіктерін тарылтып, оны қолдану нұсқаларын азайтуы мүмкін.
Кейбір кездерде компонентті емес функциялар кластың ішкі компоненттеріне қатынау қажеттігі туатын жағдайлар болады. Бұндай жағдайларда класс қандай да бір сыртқы функцияларға немесе басқа кластың компонентті функцияларына артықшылықтар бере алады. Ондай функциялар достық функциялар деп аталады.
Анықтама бойынша кластың достық функциясы деп қандай да бір компонентті болмай –ақ, сол кластың барлық компонентіне қатынай алатын функцияны айтады. Функция класс рұқсатынсыз оның досы бола алмайды. Дос болу рұқсатын алу үшін функция класс денесінде friend спецификаторымен сипатталуы керек. Тек осындай сипаттама бар болған кезде ғана класс функцияға ішкі және қорғалған компоненттеріне қатынауға рұқсат береді.
Басқа кластың компонентті функциялары да класс досы бола алады.
Достық функция класс компоненті болмағандықтан, оған public, protected, private қатынау спецификаторының әрекеті таралмайды. Достық функция прототипінің класс ішінде анықталу орны тұрақты емес.
Достық функция механизмін қолдану кластар арасындағы интерфейсті жеңілдетуге мүмкіндік береді.
Егер қандай да бір кластың барлық функциялары басқа кластың ішкі өрістеріне қатынау қажеттігі туса, онда класс түгелімен достық болып хабарлана алады.
Достарыңызбен бөлісу: |