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


= 0  белгісі жазылады,  мысалы: virtual void f(int) = 0



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

= 0 
белгісі жазылады
мысалы:
virtual void f(int) = 0;
Таза виртуалды əдіс туынды класта қайта анықталуы тиіс (қайтадан таза 
виртуалды əдіс ретінде анықталуы мүмкін).
Егер
 monstr
класындағы 
draw
əдісін
 
виртуалды əдіс ретінде анықтасақ
қай кластың əдісін шақыру қажеттігі туралы шешім нұсқауыш сілтеме жасай-
тын объектінің типіне байланысты қабылданатын болады: 
monstr *r. *р; 
r = new monstr; // monstr класының объектісі құрылады
р = new daemon; // daemon класының объектісі құрылады 
r->draw(l, 1, 1, 1); // monstr::draw əдісі шақырылады
p->draw(l, 1, 1, 1); // daemon::draw əдісі шақырылады 
р-> monstr::draw(l, 1, 1, 1); // Виртуалды əдістер 
// механизмін қолданбау
Егер 
daemon
класының объектісі 
draw 
əдісін тікелей емес, жанама түрде 
(яғни, 
monstr
класында анықталған басқа əдістен) шақыратын болса, онда 
daemon
класының
draw
əдісі шақырылады.
Сонымен, программаның орындалу кезеңінде өзіне сілтеме жасауға рұқсат 
етілетін əдіс виртуалды деп аталады (ағылшынның əдемі 
virtual
сөзінің 
бұл жердегі аудармасының мағынасы – «нақтылы түрде», яғни шақыру нақты 
орындалған кезде сілтеме рұқсат етіледі).
Кейінгі байланыстыру механизмі
Ең кем дегенде бір виртуалды əдісі бар əрбір класс (объект емес!) үшін ком-
пилятор виртуалды əдістер кестесін (
vtbl
) құрады, мұнда əрбір виртуалды 
əдіс үшін оның компьютер жадындағы адресі жазылады. Кестедегі əдістердің 
адрестері олардың кластардағы сипатталу реттілігіне сəйкес орналасады. 
Кез келген виртуалды əдістің адресі иерархия құрамындағы əрбір класс үшін
 
vtbl
кестесінде бірдей ығысуға ие болады.


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




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

    Басты бет