Объектно-ориентированное программирование на языке С++. Ноткин А.М. - 27 стр.

UptoLike

Составители: 

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