пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

I семестр:
» Оп

RTTI/ bad_cast

Используя идентификацию типа времени исполнения (run-time type identification — RTTI) можно определить тип объекта во время исполнения программы. Для этого используется функция typeid. Для использования этой функции необходимо включить заголовочный файл typeinfo.h. Общая форма записи функции typeid имеет следующий вид:

typeid (объект)

Здесь объект является объектом, чей тип требуется определить. В C++ для динамической идентификации типов[1] применяются операторы dynamic_cast и typeid (определён в файле typeinfo.h), для использования которых информацию о типах во время выполнения обычно необходимо добавить через опции компилятора при компиляции модуля.

Оператор dynamic_cast пытается выполнить приведение к указанному типу с проверкой. Целевой тип операции должен быть типом указателя, ссылки или void*.

Если целевой тип — тип указателя, то аргументом должен быть указатель на объект класса.

Если целевой тип — ссылка, то аргумент должен также быть соответствующей ссылкой.

Если целевым типом является void*, то аргумент также должен быть указателем, а результатом операции будет указатель, с помощью которого можно обратиться к любому элементу «самого производного» класса иерархии, который сам не может быть базовым ни для какого другого класса.

Оператор typeid возвращает ссылку на структуру type_info, которая содержит поля, позволяющие получить информацию о типе.

Исключение типа bad_cast  возникает, когда применяется оператор dynamic_cast к ссылочному типу и происходит ошибка при проверки времени выполнения (например, если тип не входит в отношения наследования), а также из-за std::use_facet, когда требуемый аспект не существует в текущей локализации.

class bad_cast : public exception


19.01.2017; 21:55
хиты: 173
рейтинг:0
Точные науки
информатика
Языки программирования
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь