Не думайте, что RTTI будет иметь больше / меньше накладных расходов, чем ваше решение, прежде чем протестирует его .
Вы должны попробовать оба решения и измерить производительность, чтобы получить надежный ответ.
Я на самом деле задал себе тот же вопрос несколько лет назад, и в итоге я добавил переменную-член, чтобы "закрепить" тестирование типов, как вы это сделали. Оказалось, что мой код был излишне загроможден глупыми тестами, в то время как некоторые dynamic_cast<>
сделали бы ту же самую работу (фактически лучшую работу).
Я реорганизовал код для использования dynamic_cast<>
с тех пор, и я не вернусь.
Как примечание: если ваши классы полиморфны, вы все равно уже «заплатили» за это, так что просто перейдите с dynamic_cast<>
.