ВУЗ:
Составители:
Рубрика:
28
Тогда итератор будет вызываться, например, для дополнительного
параметра типа int, так:
gr.ForEach(pf,25);
Здесь gr − объект-группа.
Динамическая идентификация типов.
Динамическая идентификация типа характерна для языков, в кото-
рых поддерживается полиморфизм. В этих языках возможны ситуации, в
которых тип объекта на этапе компиляции неизвестен.
В С++ полиморфизм поддерживается через иерархии классов,
вирту-
альные функции и указатели базовых классов. При этом указатель базово-
го класса может использоваться либо для указания на объект базового
класса, либо для указания на объект любого класса, производного от этого
базового.
Пусть группа содержит объекты различных классов и необходимо
выполнить некоторые действия только для объектов определенного класса.
Тогда в
итераторе мы должны распознавать тип очередного объекта.
В стандарт языка С++ включены средства RTTI (Run-Time Type
Idendification) − динамическая идентификация типов. Эти средства реали-
зованы в последних системах Borland C++ (версий 4.0 и выше).
Информацию о типе объекта получают с помощью оператора typeid,
определение которого содержит заголовочный файл <typeinfo.h>.
Имеется две формы оператора typeid:
typeid (объект)
typeid (имя_типа)
Оператор
typeid возвращает ссылку на объект типа type_info.
В классе type_info перегруженные операции == и != обеспечивают
сравнение типов.
Функция name () возвращает указатель на имя типа.
Имеется одно ограничение. Оператор typeid работает корректно
только с объектами, у которых определены виртуальные функции. Боль-
шинство объектов имеют виртуальные функции, хотя бы потому, что
обычно деструктор является виртуальным для устранения потенциальных
проблем с производными классами. Когда оператор typeid применяют к
неполиморфному классу (в классе нет виртуальной функции), получают
указатель или ссылку базового типа.
Примеры.
1.
#include<iostream.h>
#include<typeinfo.h>
28 Тогда итератор будет вызываться, например, для дополнительного параметра типа int, так: gr.ForEach(pf,25); Здесь gr − объект-группа. Динамическая идентификация типов. Динамическая идентификация типа характерна для языков, в кото- рых поддерживается полиморфизм. В этих языках возможны ситуации, в которых тип объекта на этапе компиляции неизвестен. В С++ полиморфизм поддерживается через иерархии классов, вирту- альные функции и указатели базовых классов. При этом указатель базово- го класса может использоваться либо для указания на объект базового класса, либо для указания на объект любого класса, производного от этого базового. Пусть группа содержит объекты различных классов и необходимо выполнить некоторые действия только для объектов определенного класса. Тогда в итераторе мы должны распознавать тип очередного объекта. В стандарт языка С++ включены средства RTTI (Run-Time Type Idendification) − динамическая идентификация типов. Эти средства реали- зованы в последних системах Borland C++ (версий 4.0 и выше). Информацию о типе объекта получают с помощью оператора typeid, определение которого содержит заголовочный файл. Имеется две формы оператора typeid: typeid (объект) typeid (имя_типа) Оператор typeid возвращает ссылку на объект типа type_info. В классе type_info перегруженные операции == и != обеспечивают сравнение типов. Функция name () возвращает указатель на имя типа. Имеется одно ограничение. Оператор typeid работает корректно только с объектами, у которых определены виртуальные функции. Боль- шинство объектов имеют виртуальные функции, хотя бы потому, что обычно деструктор является виртуальным для устранения потенциальных проблем с производными классами. Когда оператор typeid применяют к неполиморфному классу (в классе нет виртуальной функции), получают указатель или ссылку базового типа. Примеры. 1. #include #include
Страницы
- « первая
- ‹ предыдущая
- …
- 25
- 26
- 27
- 28
- 29
- …
- следующая ›
- последняя »