Из связанной статьи видно, что вы имеете в виду typeid
и dynamic_cast<>
. Вы должны четко указать это в вопросе, так как вскоре вы увидите, что многие люди прыгают прямо, не просматривая ссылки.
Теперь, как / когда они используются? Самый простой ответ - это, как правило, не должно использоваться. В большинстве случаев хорошо разработанная программа не нуждается в проверке типов во время выполнения, и если вы обнаружите, что делаете это, то есть вероятность, что у вашего проекта проблемы.
Конечно, есть исключения во всех вещах, и, в частности, пример, который @Sga дал, действительно хороший. В boost::any
библиотека выполняет стирание типа , чтобы иметь возможность хранить любой объект внутри типа, а затем использует RTTI вручную в any_cast
при извлечении значения, чтобы проверить, что тип фактического объекта правильный. Теперь, это также не распространено, большинство программ не используют стирание типов , и когда они делают, очень мало раз им нужно анализировать тип во время выполнения.