Язык программирования C++. Вводный курс


Класс type_info


Точное определение класса type_info

зависит от реализации, но некоторые его характерные черты остаются неизменными в любой программе на C++:

class type_info {

   // ïðåäñòàâëåíèå çàâèñèò îò ðåàëèçàöèè

private:

   type_info( const type_info& );

   type_info& operator= ( const type_info& );

public:

   virtual ~type_info();

   int operator==( const type_info& );

   int operator!=( const type_info& );

 

   const char * name() const;

};

Поскольку копирующие конструктор и оператор присваивания – закрытые члены класса type_info, то пользователь не может создать его объекты в своей программе:

#include <typeinfo>

 

type_info t1;  // îøèáêà: íåò êîíñòðóêòîðà ïî óìîë÷àíèþ

               // îøèáêà: êîïèðóþùèé êîíñòðóêòîð çàêðûò

type_info t2 (typeid( unsigned int ) );

Единственный способ создать объект класса type_info – воспользоваться оператором typeid.

В классе определены также операторы сравнения. Они позволяют сравнивать два объекта type_info, а следовательно, и результаты, возвращенные двумя операторами typeid. (Мы говорили об этом в предыдущем подразделе.)

typeid( re )  == typeid( manager )     // èñòèííî

typeid( *pe ) != typeid( employee )    // ложно

Функция name()

возвращает C-строку с именем типа, представленного объектом type_info. Этой функцией можно пользоваться в программах следующим образом:




Начало  Назад  Вперед



Книжный магазин