Оператор dynamic_cast
В отличие от других способов приведения, оператор dynamic_cast обеспечивает контроль соответствия типов в период вычислений.
Если объект, связанный со ссылкой или указателем, не является объектом результирующего класса, оператор dynamic_cast приводит к ошибке. Если неудачу потерпит динамическое приведение указателя, операция dynamic_cast вернет значение 0. Если неудачу потерпит динамическое приведение ссылки, формируется исключение «bad-cast».Класс объекта, к которому будет приведена ссылка или указатель, в период компиляции обычно не известен. В результате динамического приведения указатель или ссылка на объект базового класса заменяется указанием на объект производного класса.