Пример: //: С08:IntermediateCa

Автор admin Воскресенье, 14 июня 2009 11:32

Пример: //: С08:IntermediateCast.cpp #include 432 Глава 8 • RTTI linclude (b2): MI* mi – dynamic_cast(b2): Bl* bl – dynamic~cast(b2); assert(typeid(b2) !- typeid(Mi2*)): assert(typeid(b2) typeid(B2*)); delete b2: } III- В этом примере возникают дополнительные трудности, связанные с множественным наследованием (эта тема рассматривается далее в настоящей главе, а также в главе 9). Если создать объект Mi2 и преобразовать его к корневому типу (в данном случае выбирается один из двух возможных корней), то приведение к любому из производных уровней Ml или Mi2 через dynamic_cast оказывается успешным. Возможно даже преобразование от одного корня к другому: В1* Ы = dynamic_cast(b2): Такое преобразование проходит успешно, потому что В2 в действительности ссылается на объект Mi2, который содержит подобъект типа В1. Преобразование к промежуточным типам откры


Комментарии закрыты.