Жоғарылататын түрлендіру
Жоғарылататын түрлендіруді
dynamic_cast
операциясы арқылы орындау
қарапайым меншіктеумен (ашық мұралау кезінде) бірдей болып саналады:
class В{ /* ... */ };
class С: public В{ /* ... */ };
С* с = new С;
В* b = dynamic_cast(c); // В* b = с
э
квивалентті;
Төмендететін түрлендіру
dynamic_cast
операциясы көбінесе төмендететін түрлендіруде –
компилятордың түрлендіру дұрыстығын тексеру мүмкіндігі болмаған кезде
қолданылады.
Туынды кластар құрамында базалық кластарда жоқ функциялар болуы
мүмкін. Оларды базалық кластың нұсқауышы арқылы шақыру үшін осы
нұсқауыштың расында да туынды кластың объектісіне сілтеме жасайты-
нына сенімді болу керек. Мұндай тексеру
RTTI
(run-time type information)
– «программаның атқарылуы кезіндегі тип туралы ақпарат» арқылы типті
келтіруді жүзеге асыру сəтінде орындалады. Түрлендіруді тексеру мүмкіндігі
орындалуы үшін
dynamic_cast
операциясының аргументі полиморфты тип-
те болуы тиіс, яғни оның кем дегенде бір виртуалды əдісі (222 б. қараңыз)
болуы керек.
1
Егер өрнек нөлге тең болса, оның нəтижесі де нөлге тең болады.
252
Достарыңызбен бөлісу: |