Несмотря на то, что dynamic_cast
возвращает 0
если обрабатываемый указатель имеет несовместимый тип, почему бы вам не использовать dynamic_cast
?
Требуется ненулевое время выполнения. Это об этом. C-броски и их встречные части c ++, такие как: reinterpret
или же static
0-накладные расходы, потому что они выполняются во время компиляции.
Ну, для некоторых, важной частью может быть то, что им нужно RTTI
, что также вносит некоторые накладные расходы, например, в размер кода, потому что компилятор должен включать информацию о типе в двоичный файл, что обычно не делается. Следует отметить, что это может быть нестандартной опцией в компиляторах.
Также актуальное примечание из вики: «В первоначальном проекте C ++ Бьярн Страуструп не включал информацию о типах во время выполнения, потому что считал, что этот механизм часто используется не по назначению.«
РЕДАКТИРОВАТЬ: Следуя цитате и комментариям. Я не уверен, если это действительно недостаток, я хотел бы отметить, что когда вы используете его, вы должны подумать, действительно ли вам это нужно.
Кому-то это просто не нравится, кому-то это не нравится.
Время выполнения накладных расходов:
Вопросы дизайна: