Wird es allgemein als schlechte Praxis angesehen, typeid
im Produktionscode zu verwenden? Außerdem habe ich festgestellt, dass typeid
retains type_info
zurückgibt, was einige Metadaten enthält (z. B. eine Zeichenfolge mit dem Namen des Typs). Gibt es eine Möglichkeit, dies zu deaktivieren?
Es ist schwer zu sagen, ob die Verwendung eines bestimmten Sprachfeatures "schlecht" oder "gut" ist. Es hängt wirklich davon ab, wie Sie es verwenden. Es ist nichts an sich falsch, typeid
zu verwenden, wenn es das richtige Werkzeug für den Job ist. Wenn es jedoch eine bessere Lösung für jedes Problem gibt, das Sie lösen, sollten Sie typeid
zugunsten dieser besseren Lösung vermeiden.
Es ist oft keine gute Idee, typeid
zu verwenden, da seine Verwendung oft durch Vererbung und virtuelle Funktionen vermieden werden kann. Wenn Sie Ihr System auf diese Weise aktualisieren können, ist dies eine gute Idee.
Ob Sie typeid
vermeiden können, indem Sie std::type_info
zurückgeben, dies sollte keine Leistungsprobleme verursachen. typeid
wird als const std::type_info&
ausgewertet, so dass keine der enthaltenen String-Informationen tief kopiert werden. Bei den meisten Implementierungen ist das tatsächliche std::type_info
-Objekt in der virtuellen Funktionstabelle des Objekts gespeichert, so dass intern nicht kopiert wird.
dynamic_cast
ebenfalls deaktiviert.