Лекция №1.
Неизвестные типы и пространство неизвестных имен. Динамическое определение типов. Операторы переключения типов. Создание пространства новых имен. Буферизированный вход и выход.
Содержание:
Динамическая идентификация типов. Оператор typeid().
Динамическая идентификация типов. Операторы dynamic_cast, const_cast, reinterpret_cast, static_cast.
Пространства имен. Ключевые слова namespace, using. Правила создания пространства имен. Глобальное пространство имен.
Динамическая идентификация типов. Оператор typeid().
1. Понятие о динамической идентификации типа.
В целях поддержания динамического полиморфизма в языке C++ введена динамическая идентификация типа (RTTI – Run-Time Type Identification). Эта динамическая идентификация позволяет идентифицировать тип объекта при выполнении программы. Основным средством динамической идентификации типа является оператор typeid().
С целью обеспечения лучшего приведения типов в последние версии C++ включены дополнительные операторы приведения типа. К этим операторам относятся:
dynamic_cast;
const_cast;
reinterpret_cast;
static_cast.
Также язык C++ имеет стандартный оператор приведения типа, который имеет вид:
(type)expression
2. Идентификация типа. Операор typeid()
Язык программирования C++ поддерживает динамический полиморфизм благодаря сочетанию наследования, виртуальных функций и использования указателя на базовый класс. В иерархии классов указатель на базовый класс может указывать на экземпляр любого класса в иерархии. Поэтому не всегда можно предположить, на объект какого класса иерархии указывает указатель. Идентификацию типа нужно производить по ходу выполнения программы.
Для идентификации типа в языке C++ используется оператор typeid(). Этот оператор имеет две формы использования:
Оператор typeid() возвращает ссылку на объект типа type_info. Класс type_info описывает тип объекта и имеет следующие внутренние члены:
Операторные функции
bool operator==(const type_info& obj);
bool operator!=(const type_info& obj);
Эти функции перегружают операторы сравнения == и !=.
Функцию
const char* name();
Эта функция возвращает указатель на имя определяемого типа.
Функцию
bool before(const type_info& obj);
Эта функция возвращает true, если вызывающий объект предшествует объекту, использованному в качестве параметра.
Чтобы использовать оператор typeid(), нужно подключить модуль typeinfo.
#include
Do'stlaringiz bilan baham: |