Scott Meyer
в своей книге Effective C++
говорит, что dynamic_cast
используется для безопасного удаления или иерархии наследования. То есть вы используете dynamic_cast для указания указателей или ссылок на объекты базового класса в указатели или ссылки на объекты базового класса с производными или родственными классами таким образом, чтобы вы могли определить, удалось ли кастам выполнить.
Неудачные отбрасывания указываются нулевым указателем (при указателях каста) или исключением (при ссылках на литье).
Я хотел бы получить два фрагмента кода, показывающие неудавшийся листинг в случае указания указателя на литье и ссылки на литье.