std::type_info, описывающий тип выражения. Для полиморфного класса и ссылки или указателя на базу учитывают.">
Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
496 of 696 menu
◀ ▶

Имя типа во время выполнения в C++

Оператор typeid возвращает ссылку на объект std::type_info, описывающий тип выражения.

Для полиморфного класса и ссылки или указателя на базу учитывают фактический тип объекта в памяти. Строку из метода name компилятор формирует по своим правилам, но ее все равно полезно вывести для проверки. Подключим <typeinfo> и напечатаем имя через базовую ссылку:

┌pPathX="main.cpp" #include <iostream> #include <typeinfo> class Shape { public: virtual ~Shape() = default; }; class Circle : public Shape {}; int main() { Circle disk; Shape& link = disk; std::cout << typeid(link).name() << "\n"; return 0; }

Сделайте полиморфный Node и потомка Leaf. Сохраните Leaf в ссылке Node& и выведите typeid для этой ссылки через name.

Объявите Widget с виртуальным деструктором и Panel, наследующий его. Напечатайте typeid для объекта Panel, хранимого как Widget&.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить