Dynamic_Cast
медленнее, но они безопаснее, чем STatic_cast
S ( При использовании с иерархиями объекта, конечно). Мой вопрос, после того, как я обеспечил в моем коде отладки, что все (динамические) отливки верны, есть ли какие-либо причины для меня не изменить их на STATIC_CACT
S?
Я планирую сделать это со следующей конструкцией. (Кстати, можете ли вы думать о лучшем имени, чем Assert_cast
? Может быть, Debug_cast
?)
#if defined(NDEBUG)
template
T assert_cast(U other) {
return static_cast(other);
}
#else
template
T assert_cast(U other) {
return dynamic_cast(other);
}
#endif
Редактировать: Уже есть что-то для этого: Polymorphic_Downcast
. Благодаря плазмаху за то, что указываю на это.