Dynamic cast
Автор КАДУМ задал вопрос в разделе Другие языки и технологии
С++: Чем понижающий static_cast отличается от понижающего dynamic_cast-а? и получил лучший ответ
Ответ от Голый Мужик[гуру]
Семантически разница заключается в том, что static_cast проводит преобразование типов на уровне компиляции, а dynamic_cast - на этапе выполнения. Технически это означает, что dynamic_cast использует RTTI, а static_cast - нет. Практическое различие заключается в том, что в случае несоответствия фактического типа ожидаемому при уточнении типов, dynamic_cast вернёт нулевой указатель. Это, в частности, означает, что с помощью dynamic_cast можно на этапе выполнения проверить, является ли экземпляр, обобщённый типом A, экземпляром типа B, производного от A. Однако следует помнить, что RTTI в C++ убог и просто уё-ищен: среда исполнения этого языка минимальна, а рефлексия отсутствует напрочь. Поэтому, считающий себя Ъ C++-программист не использует RTTI, а инкапсулирует зависящий от типа код в виртуальные методы. Ибо на фокусы, основанные на работе рантайма, воможностей C++ всё равно не хватит, а банальные проверки и уточнения типов прекрасно заменяются полиморфизмом.
Боже мой! Слов то каких умных нахватался. Да никакой, обе потенциально содержат багу. Потому что они используются не для понижения и для повышения (даже если считать что <b*> это <B*>).