372
__
_
Самоучитель
C++
else {
cout « "Указатель bp к типу Derived * не приведен\п" « "поскольку Ьр в действительности указываетХп" « "на объект типа Base\n"; cout « endl; dp = &d_ob; // dp указывает на объект типа Derived bp = dynamic_cast<Base *> (dp) ; if(bp) { cout « "Указатель dp к типу Base * приведен успешно\п" « bp->f ( ) ; } else cout « "Ошибка\п"; return 0 ;
Программа выводит на экран следующую информацию: Тип Derived * к типу Derived * приведен успешно Внутри класса Derived Тип Derived * к типу Base * приведен успешно Внутри класса Derived Тип Base * к типу Base * приведен успешно Внутри класса Base Тип Base * к типу Derived * не приведен Указатель Ьр к типу Derived * приведен успешно поскольку Ьр в действительности указывает на объект типа Derived Внутри класса Derived Указатель Ьр к типу Derived * не приведен поскольку Ьр в действительности указывает на объект типа Base Указатель dp к типу Base * приведен успешно Внутри класса Derived
2. В следующем примере показано, как оператор typeid можно заменить оператором dynamic_cast. /* Использование оператора dynamic_cast для замены оператора typeid */ ttinclude <iostream>