Sobes.tech
Назад к вопросам
Junior — Middle
82

В чем заключается назначение оператора dynamic_cast в C++?

Компании, где спрашивали
Renga Software

Ответ от нейросети

sobes.tech AI

Оператор dynamic_cast в C++ используется для безопасного приведения указателей или ссылок в иерархии наследования, особенно при работе с полиморфизмом (классами с виртуальными функциями). Он позволяет проверить во время выполнения, можно ли привести указатель или ссылку базового класса к указателю или ссылке производного класса.

Если приведение возможно, dynamic_cast возвращает корректный указатель или ссылку; если нет — возвращает nullptr (для указателей) или выбрасывает исключение std::bad_cast (для ссылок).

Пример:

class Base {
public:
    virtual ~Base() {}
};
class Derived : public Base {};

Base* b = new Derived();
Derived* d = dynamic_cast<Derived*>(b); // успешное приведение

Base* b2 = new Base();
Derived* d2 = dynamic_cast<Derived*>(b2); // nullptr, т.к. b2 не указывает на Derived

Таким образом, dynamic_cast помогает безопасно работать с полиморфными объектами и избегать неопределённого поведения при неправильном приведении типов.