= 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 кестесінде бірдей ығысуға ие болады.