В C++ используются следующие операторы приведения типов:
static_cast
: Выполняет преобразования между связанными типами, где компилятор может проверить корректность. Например, между числовыми типами, указателем на базовый класс к указателю на производный (без виртуальных функций), и наоборот, между указателями и void*
. Небезопасен при преобразованиях типа Derived*
к Base*
если нет гарантий, что указатель действительно указывает на объект Derived
.dynamic_cast
: Используется для безопасного приведения типа указателей и ссылок в иерархии классов с виртуальными функциями. Проверка типа выполняется во время выполнения (runtime). Если приведение невозможно, для указателей возвращается nullptr
, для ссылок генерируется исключение std::bad_cast
. Требует, чтобы тип имел виртуальные функции (полиморфен).const_cast
: Используется для изменения (удаления или добавления) квалификаторов const
и volatile
. Использование для снятия const
с объекта, изначально объявленного как const
, и его последующего изменения приводит к неопределённому поведению.reinterpret_cast
: Выполняет низкоуровневое, наименее безопасное преобразование. Позволяет преобразовать один тип указателя в другой, указатель в целое число, и наоборот, без какой-либо проверки. Результат зависВ C++ используются следующие операторы приведения типов:
static_cast
: Выполняет преобразования между связанными типами, где компилятор может проверить корректность. Например, между числовыми типами, указателем на базовый класс к указателю на производный (без виртуальных функций), и наоборот, между указателями и void*
. Небезопасен при преобразованиях типа Derived*
к Base*
если нет гарантий, что указатель действительно указывает на объект Derived
.dynamic_cast
: Используется для безопасного приведения типа указателей и ссылок в иерархии классов с виртуальными функциями. Проверка типа выполняется во время выполнения (runtime). Если приведение невозможно, для указателей возвращается nullptr
, для ссылок генерируется исключение std::bad_cast
. Требует, чтобы тип имел виртуальные функции (полиморфен).const_cast
: Используется для изменения (удаления или добавления) квалификаторов const
и volatile
. Использование для снятия const
с объекта, изначально объявленного как const
, и его последующего изменения приводит к неопределённому поведению.reinterpret_cast
: Выполняет низкоуровневое, наименее безопасное преобразование. Позволяет преобразовать один тип указателя в другой, указатель в целое число, и наоборот, без какой-либо проверки. Результат зависRegister or sign in to get access to full answers for all questions from the question bank.