Динамическое определение типа данных

Для определения типа данных при выполнении программы предназначен оператор typeid. Прежде чем использовать оператор, необходимо подключить файл typeinfo:

#include <typeinfo>

Оператор имеет следующий формат:

<Экземпляр класса type_info> = typeid(<Данные>);

В качестве значения оператор typeid возвращает экземпляр класса type_info. Этот экземпляр можно сравнить с другим экземпляром того же класса, используя операторы == (равно) и != (не равно). Получить название типа данных позволяет метод name(). Пример использования оператора typeid приведен в листинге 3.1.

Листинг 3.1. Динамическое определение типа данных

#include <iostream>
#include <typeinfo>

int main() {
   long x = 5;
   int y = 12;
   double z = 3.14;
   std::cout << typeid(x).name() << std::endl;     // l (long)
   std::cout << typeid(y).name() << std::endl;     // i (int)
   std::cout << typeid(z).name() << std::endl;     // d (double)
   std::cout << typeid(12.1f).name() << std::endl; // f (float)
   if (typeid(x) == typeid(y)) {
      std::cout << "==" << std::endl;
   }
   else {
      std::cout << "!=" << std::endl; // !=
   }
   if (typeid(x) != typeid(y)) {
      std::cout << "!=" << std::endl; // !=
   }
   else {
      std::cout << "==" << std::endl;
   }
   return 0;
}

В MinGW для элементарных типов выводятся только буквы, тогда как в VC++ — название типа (возвращаемые значения указаны в круглых скобках).

Учебник C++ (MinGW-W64)
Учебник C++ (MinGW-W64) в формате PDF

Помощь сайту

ЮMoney (Yandex-деньги): 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов