static cast



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*>).

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: С++: Чем понижающий static_cast отличается от понижающего dynamic_cast-а?
Dynamic cast на Википедии
Посмотрите статью на википедии про Dynamic cast
Static cast на Википедии
Посмотрите статью на википедии про Static cast
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*