Back to questions
Junior — Middle
78
Какие типы приведения типов ты знаешь и использовал в своей практике?
Companies where asked
ГК Адепт
Answer from AI
sobes.tech AI
В C++ существуют несколько типов приведения типов:
- static_cast — используется для стандартных преобразований, например, между числовыми типами, указателями в иерархии наследования, а также для явного вызова конструктора преобразования.
- dynamic_cast — применяется для безопасного приведения указателей или ссылок в иерархии наследования, с проверкой типа во время выполнения (RTTI). Возвращает nullptr при неудаче для указателей.
- const_cast — позволяет убрать или добавить квалификатор const или volatile.
- reinterpret_cast — выполняет низкоуровневое преобразование типов, например, между указателями на несвязанные типы, без проверки безопасности.
В практике чаще всего использовал static_cast для преобразования числовых типов и указателей в иерархии, const_cast для снятия const при необходимости, а dynamic_cast для безопасного приведения в полиморфных классах.
Пример использования static_cast:
int i = 10;
double d = static_cast<double>(i);
Пример dynamic_cast:
class Base { virtual void foo() {} };
class Derived : public Base {};
Base* b = new Derived();
Derived* d = dynamic_cast<Derived*>(b);
if (d) {
// Приведение успешно
}