Глава 23
Динамическая идентификация типов
Компилятор Borland C++ 5 обеспечивает полную поддержку недавно принятого расширения стандарта ANSI/ISO под названием Динамическая идентификация типов (Run-Time Type Identification, RTTI). Это средство, не получившее пока широкого распространения, предоставляет богатые возможности по обеспечению переносимости и устойчивости работы программ.
Использование RTTI полезно для многих целей, в частности с помощью этого средства программы приобретают следующие способности:
• Точно определять тип объекта даже в том случае, когда указатель, используемый для запроса, принадлежит к более высокому уровню в иерархии классов.
• Безопасно "перемещать" указатель вверх и вниз в иерархии наследования, то есть приводить тип указателя к выше- или нижестоящему в той же классовой иерархии типу. В частности, становится возможным "перемещение" указателей на виртуальные базовые классы вниз к производным классам (до сих пор такие действия были незаконными).
• Использовать в выражениях типы экземпляров объектов.
На первый взгляд эти перспективы могут показаться не слишком заманчивыми, но, как мы увидим далее в этой главе, эти простые и отчасти скучные языковые средства при правильном использовании обеспечивают важные возможности. В этой главе вы:
• Изучите различные компоненты RTTI
• Ознакомитесь с последовательностью действий, необходимых для интеграции RTTI в ваши программы
• Узнаете, что наиболее важными составляющими RTTI являются операции dynamic_cast И typeid, а также класс typeinfo
21 Зак.ЗОй