Глава 23

h06411.jpg

Динамическая идентификация типов

Компилятор Borland C++ 5 обеспечивает полную поддержку недавно принятого расширения стандарта ANSI/ISO под названием Динамическая идентификация типов (Run-Time Type Identification, RTTI). Это средство, не получившее пока широкого распространения, предоставляет богатые возможности по обеспечению переносимости и устойчивости работы программ.

Использование RTTI полезно для многих целей, в частности с помощью этого средства программы приобретают следующие способности:

• Точно определять тип объекта даже в том случае, когда указатель, используемый для запроса, принадлежит к более высокому уровню в иерархии классов.

• Безопасно "перемещать" указатель вверх и вниз в иерархии наследования, то есть приводить тип указателя к выше- или нижестоящему в той же классовой иерархии типу. В частности, становится возможным "перемещение" указателей на виртуальные базовые классы вниз к производным классам (до сих пор такие действия были незаконными).

• Использовать в выражениях типы экземпляров объектов.

На первый взгляд эти перспективы могут показаться не слишком заманчивыми, но, как мы увидим далее в этой главе, эти простые и отчасти скучные языковые средства при правильном использовании обеспечивают важные возможности. В этой главе вы:

• Изучите различные компоненты RTTI

• Ознакомитесь с последовательностью действий, необходимых для интеграции RTTI в ваши программы

• Узнаете, что наиболее важными составляющими RTTI являются операции dynamic_cast И typeid, а также класс typeinfo

21 Зак.ЗОй