Вопросы к Поиску с Алисой
Основное отличие staticcast и dynamiccast заключается в том, как они проверяют совместимость типов при приведении:
staticcast используется для допустимых приведений типов, например для преобразования между числовыми и enum, приведения указателей к типу void* и наоборот. ru.wikipedia.org dynamiccast применяется для приведения вниз по иерархии наследования, с особым поведением, если объект не имеет нужного типа: для указателей возвращается NULL, для ссылок создаётся исключение std::bad_cast. ru.wikipedia.org