ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 11) онлайн
Динамическая информация о типах
Существует возможность узнавать информацию о классе объекта и даже изме-
нять этот класс прямо во время выполнения программы. Мы вкратце рассмот-
рим два механизма, которые служат для этого: операция dynamic_cast и оператор
typeid. Их можно рассматривать как дополнительные средства языка, но когда-
нибудь они могут и пригодиться.
Эти возможности используются, когда базовый класс имеет ряд порожден-
ных классов, созданных порой довольно непростым путем. Для того чтобы ис-
пользовать динамический подход, базовый класс обязан быть полиморфным,
то есть он должен содержать по крайней мере одну виртуальную функцию.
Чтобы заработали dynamic_cast и typeid, компилятор должен активизировать
механизм, который позволяет определять и изменять тип объекта во время вы-
полнения программы — RTTI (Run-Time Type Information). В системе Borland
С++ Builder этот механизм включается по умолчанию, а в Microsoft Visual C++
нужно подключать его вручную. Также необходимо включить в программу заго-
ловочный файл TYPEINFO.
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
