Вот хитрость, если у вас есть некоторые классы, такие как A, B, C, D, E, и у них есть общий базовый класс Base, тогда понижающий класс от Base должен выбрать правильный класс.Приведение работает только в том случае, если исходный объект был создан для того же класса.В примере с 5 производными классами и одним базовым классом есть шанс 1: 5 сделать это правильно.Что не очень хорошо, и программисты часто выбирают это неправильно.static_cast не может обнаружить проблему вообще, и неправильный выбор типа в static_cast приводит к сбоям.dynamic_cast может обнаружить его, но только во время выполнения, т. е. dynamic_cast также может завершиться с ошибкой и вернуть NULL или выдать исключение.RTTI необходим для того, чтобы dynamic_cast мог правильно работать.