Объектга йўналтирилган программалаш


Download 0.58 Mb.
bet53/71
Sana08.05.2023
Hajmi0.58 Mb.
#1444224
TuriПрограмма
1   ...   49   50   51   52   53   54   55   56   ...   71
Bog'liq
С ОЙП

tayanch=hos1;
tayanch->Chop_X();
tayanch=hos2;
tayanch->Chop_X();
Chop_X() функциялари виртуал бўлганлиги учун ҳар бир объектнинг ўз функцияси чақирилади. Hosila_1 ва Hosila_2 синфларида Chop_X() функциялар Tayanch таянч синфидаги Chop_X() функциясини қайта аниқлайди. Агар ҳосилавий синфда Chop_X() функцияси қайта аниқланмаса, келишув бўйича таянч синфдаги Chop_X() функцияси амал қилади.
Юқоридаги программа ишлаши натижасида экранга
Tayanch::x=10
Hosila_1::x=20
Hosila_2::x=30
натижалар чоп этилади:
Функцияларни кўрсаткич ва мурожаатлар ёрдамида чақиришда қуйидаги қоидаларга амал қилинади:

  • виртуал функцияни чақириш уни чақираётган объект турига мос равишда ҳал қилинади;

  • виртуал бўлмаган функцияларни чақириш кўрсаткич турига мос равишда амалга оширилади.

Виртуал функциялар фақат қандайдир синфга тегишли объектлар учун чақирилишини инобатга оладиган бўлсак, глобал ёки статик функцияларни виртуал деб эълон қилиш мумкин эмас. virtual калит сўзи ҳосилавий синфда функцияни қайта аниқлашда ишлатилиши мумкин, лекин мажбурий эмас.
Таянч синфдаги виртуал функциялар шу синфда аниқланиши керак, агар улар соф виртуал деб эълон қилинган бўлмаса. Ҳосилавий синфда эълон қилинган функция таянч синфдаги виртуал функцияни қайта аниқлайди, агар унинг номи виртуал функция номи билан мос тушса, улар бир хил миқдордаги ва турлари мос келган параметрларга эга бўлса. Агар функция виртуал функциядан ҳаттоки битта параметри билан фарқ қилса, у ҳолда ҳосилавий синфдаги бу функция янги ҳисобланади ва қайта аниқлаш рўй бермайди. Ҳосилавий синфдаги функция виртуал функциядан фақат қайтарувчи қиймати билан фарқланмайди, уларнинг параметрлар рўйхати турлича бўлиши керак.
Қуйидаги мисолда виртуал функция таянч синфдаги ўзи билан бир хил прототипга эга виртуал функцияни қайта аниқлайди.
#include
class Tayanch

Download 0.58 Mb.

Do'stlaringiz bilan baham:
1   ...   49   50   51   52   53   54   55   56   ...   71




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling