Лекция №1. Неизвестные типы и пространство неизвестных имен. Динамическое определение типов. Операторы переключения типов. Создание пространства новых имен. Буферизированный вход и выход


Download 36.96 Kb.
bet1/8
Sana25.02.2023
Hajmi36.96 Kb.
#1229591
TuriЛекция
  1   2   3   4   5   6   7   8
Bog'liq
Лекция №1 (1)


Лекция №1.
Неизвестные типы и пространство неизвестных имен. Динамическое определение типов. Операторы переключения типов. Создание пространства новых имен. Буферизированный вход и выход.
Содержание:

  1. Динамическая идентификация типов. Оператор typeid().

  2. Динамическая идентификация типов. Операторы dynamic_cast, const_cast, reinterpret_cast, static_cast.

  3. Пространства имен. Ключевые слова 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

Download 36.96 Kb.

Do'stlaringiz bilan baham:
  1   2   3   4   5   6   7   8




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling