type_info-Klasse
Die type_info Klasse beschreibt Typinformationen, die vom Compiler innerhalb des Programms generiert werden. Objekte dieser Klasse speichern effektiv einen Zeiger auf einen Namen für den Typ. Die type_info Klasse speichert auch einen codierten Wert, der zum Vergleichen von zwei Typen für Gleichheit oder Sortierreihenfolge geeignet ist. Die Codierungsregeln und die Sortierreihenfolge für Typen sind nicht spezifiziert und können je nach Programm unterschiedlich sein.
Die <typeinfo>
Headerdatei muss eingeschlossen werden, um die type_info Klasse zu verwenden. Die Schnittstelle für die type_info-Klasse lautet:
class type_info {
public:
type_info(const type_info& rhs) = delete; // cannot be copied
virtual ~type_info();
size_t hash_code() const;
_CRTIMP_PURE bool operator==(const type_info& rhs) const;
type_info& operator=(const type_info& rhs) = delete; // cannot be copied
_CRTIMP_PURE bool operator!=(const type_info& rhs) const;
_CRTIMP_PURE int before(const type_info& rhs) const;
size_t hash_code() const noexcept;
_CRTIMP_PURE const char* name() const;
_CRTIMP_PURE const char* raw_name() const;
};
Objekte der type_info Klasse können nicht direkt instanziiert werden, da die Klasse nur über einen privaten Kopierkonstruktor verfügt. Die einzige Möglichkeit zum Erstellen eines (temporären) type_info Objekts besteht darin, den Typeid-Operator zu verwenden. Da der Zuordnungsoperator auch privat ist, können Sie keine Objekte der Klasse type_info kopieren oder zuweisen.
type_info::hash_code
definiert eine Hashfunktion, die für die Zuordnung von Werten vom Typtypinfo zu einer Verteilung von Indexwerten geeignet ist.
Die Operatoren ==
und !=
können verwendet werden, um die Gleichheit und Ungleichheit mit anderen type_info Objekten zu vergleichen.
Es gibt keine Verbindung zwischen der Sortierreihenfolge von Typen und Vererbungsbeziehungen. Verwenden Sie die type_info::before
Memberfunktion, um die Sortierreihenfolge von Typen zu bestimmen. Es gibt keine Garantie dafür, dass type_info::before
dasselbe Ergebnis in verschiedenen Programmen oder sogar unterschiedlichen Läufen desselben Programms erzielt wird. Auf diese Weise type_info::before
ähnelt die Adresse des (&)
Operators.
Die type_info::name
Memberfunktion gibt eine const char*
Zeichenfolge mit Null-Beendigung zurück, die den lesbaren Namen des Typs darstellt. Der Speicher, auf den gezeigt wird, wird zwischengespeichert und sollte nie direkt freigegeben werden.
Die type_info::raw_name
Memberfunktion ist microsoftspezifisch. Sie gibt eine const char*
Zeichenfolge mit Null-Beendigung zurück, die den verzierten Namen des Objekttyps darstellt. Der Name wird in seiner eingerichteten Form gespeichert, um Platz zu sparen. Folglich ist diese Funktion schneller, als type_info::name
weil sie den Namen nicht rückgängig machen muss. Die von der type_info::raw_name
Funktion zurückgegebene Zeichenfolge ist in Vergleichsvorgängen nützlich, ist aber nicht lesbar. Wenn Sie stattdessen eine lesbare Zeichenfolge benötigen, verwenden Sie type_info::name
diese.
Typinformationen werden nur für polymorphe Klassen generiert, wenn die Compileroption /GR (Laufzeittypinformationen aktivieren) angegeben ist.
Siehe auch
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für