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



Pdf көрінісі
бет199/465
Дата09.01.2023
өлшемі3,66 Mb.
#60709
түріПрограмма
1   ...   195   196   197   198   199   200   201   202   ...   465
Байланысты:
аибм сплюс

p->draw(l, 1, 1, 1);
операторының орындалуы кезінде 
daemon
класының емес,
 monstr 
класының 
əдісі шақырылады, өйткені əдістерге сілтемелер программаны жинақтау ба-
рысында рұқсат етіледі. Бұл үрдіс ерте байланыстыру деп аталады. 
daemon
класының əдісін шақыру үшін нұсқауыш типін тікелей түрде түрлендіруді 
қолдануға болады:
((daemon * p))->draw(1, 1, 1, 1);
Бұл əрқашан мүмкін бола бермейді, өйткені əртүрлі уақыт мезетінде 
нұсқауыш иерархияның əртүрлі кластарының объектілеріне сілтеме жасауы 
мүмкін жəне программаның компиляциясы кезінде нақты класс белгісіз болуы 
мүмкін. Мысал ретінде параметрі базалық класс объектісіне нұсқауыш болып 
табылатын функцияны келтіруге болады. Программаның орындалуы кезінде 
оның орнына кез келген туынды класқа нұсқауыш берілуі мүмкін. Басқа мы-
сал – иерархияның əртүрлі объектілеріне нұсқауыштардың байланысқан 
тізімі, бұл тізіммен бір сипатта жұмыс істеу керек. 
Ерте байланыстырумен қатар, C++ тілінде кейінгі байланыстыру механизмі 
жүзеге асырылған, мұнда əдіске сілтемелер жасауға рұқсат беру əдісті 
шақырған объектінің нақты типіне байланысты программаның атқырылу 
кезеңінде орындалады. Бұл механизм виртуалды əдістер көмегімен жүзеге 
асырылған, ол келесі бөлімде қарастырылады. 
Виртуалды əдісті анықтау үшін 
virtual
спецификаторы қолданылады, 
мысалы:
virtual void drawdnt x, int у, int scale, int position); 
Виртуалды əдістерді сипаттау жəне пайдалану ережелерін қарастырайық:
□ Егер базалық класта əдіс виртуалды ретінде анықталған болса, туынды 
класта дəл осындай атаумен жəне параметрлер жиынтығымен анықталған 
əдіс автоматты түрде виртуалды болады, ал параметрлер жиынтығы əртүрлі 
болса, əдіс қарапайым болады. 
□ Виртуалды əдістер мұраланады, яғни оларды туынды класта қайта 
анықтау тек айырықша əрекеттерді тағайындау қажет болғанда орындалады. 
Қайта анықтау кезінде оларға қол жеткізу құқықтарын өзгертуге болмайды.
□ Егер виртуалды əдіс туынды класта қайта анықталған болса, осы класс 
объектілері көріну аймағына қол жеткізу операциясының көмегімен базалық 
класс əдісін пайдалану мүмкіндігіне ие бола алады. 


223
□ Виртуалды əдісті 
static
модификаторы арқылы жариялауға болмайды, 
бірақ ол достас əдіс ретінде жариялануы мүмкін.
□ Егер класта виртуалды əдістің сипаттамасы енгізілетін болса, ол ең 
болмағанда, таза виртуалды əдіс ретінде анықталуы керек.
 Таза виртуалды əдісте оның тұлғасының орнына 


Достарыңызбен бөлісу:
1   ...   195   196   197   198   199   200   201   202   ...   465




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

    Басты бет