Dynamic cast c: преобразование типов в С++
Dynamic cast является оператором C++ и используется для выполнения проверки типов во время выполнения программы. Этот оператор позволяет преобразовать указатель или ссылку на базовый класс в указатель или ссылку на производный класс.
Пример использования оператора dynamic_cast:
cpp
class Shape {
virtual void draw() {}
};
class Circle : public Shape {
void draw() {}
};
class Square : public Shape {
void draw() {}
};
int main() {
Shape* shape1 = new Circle;
Shape* shape2 = new Square;
Circle* circle1 = dynamic_cast(shape1); // Преобразуем указатель на Circle
Circle* circle2 = dynamic_cast(shape2); // Преобразование невозможно
return 0;
}
В примере выше, мы создаём два объекта производных классов Circle и Square, и сохраняем указатели на них в указателях Shape. Затем мы преобразуем указатель shape1, который указывает на объект класса Circle в указатель на Circle, используя оператор dynamic_cast. Этот оператор выполняет проверку типа во время выполнения программы и преобразует указатель, если это возможно.
Второе преобразование, shape2, указывает на объект класса Square, который не является производным от класса Circle. Оператор dynamic_cast не сможет выполнить это преобразование, и вернёт нулевой указатель.
Резюмируя, оператор dynamic_cast используется для выполнения проверки типов во время выполнения программы и преобразования указателей или ссылок на производные классы к базовому классу. Он возвращает нулевой указатель, если проверка типа не удалась.