Самоучитель C++ Part 002

Page 24

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>


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.