вает интересное различие между

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

вает интересное различие между операторами dynamic_cast и typeid. Оператор typeid всегда выдает указатель на статический объект type_info, описывающий динамический тип объекта. Таким образом, он не предоставляет информации о промежуточных уровнях. В следующем (истинном) выражении оператор typeid, в отличие от dynamic_cast, не воспринимает Ь2 как указатель на производный тип: typeid(Ь2) != typeid(Mi2*) Тип Ь2 просто соответствует фактическому типу указателя: typeid(Ь2) != typeid(В2*) Указатели на void RTTI работает только с полноценными типами. Иначе говоря, при использовании оператора typeid должна быть доступна вся информация о классе. В частности, RTTI не работает с указателями на void: //: COS:VoidRTTI.срр // RTTI и указатели на void Оператор typeid 433 Вызов dynamic_cast всегда дает адрес всего объекта (не одного из его подобъектов). Эта тема более подробно рассматривается в следующей главе. //!#include #i nclude using namespace std: class Stimpy { public: virtual void happyО {} virtual void joyО {} virtual -StimpyО {} }: int mainO { void* v – new Stimpy: // Ошибка: III


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