type_info — Klasa
Klasa type_info opisuje informacje o typie generowane w programie przez kompilator. Obiekty tej klasy skutecznie przechowują wskaźnik do nazwy typu. Klasa type_info przechowuje również zakodowaną wartość odpowiednią do porównywania dwóch typów równości lub sortowania kolejności. Reguły kodowania i sekwencja typów sortowania są nieokreślone i mogą się różnić między programami.
Aby <typeinfo>
można było użyć klasy type_info, należy dołączyć plik nagłówka. Interfejs klasy type_info to:
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;
};
Nie można utworzyć wystąpienia obiektów klasy type_info bezpośrednio, ponieważ klasa ma tylko prywatny konstruktor kopiowania. Jedynym sposobem konstruowania (tymczasowego) obiektu type_info jest użycie operatora typeid . Ponieważ operator przypisania jest również prywatny, nie można kopiować ani przypisywać obiektów type_info klasy.
type_info::hash_code
definiuje funkcję skrótu odpowiednią do mapowania wartości typu typeinfo na rozkład wartości indeksu.
Operatory ==
i !=
mogą służyć do porównywania równości i nierówności z innymi obiektami type_info odpowiednio.
Nie ma żadnego połączenia między określoną kolejnością typów i relacjami dziedziczenia. Użyj funkcji składowej type_info::before
, aby określić sekwencję sortowania typów. Nie ma gwarancji, że type_info::before
przyniesie ten sam wynik w różnych programach, a nawet różnych uruchomieniach tego samego programu. W ten sposób type_info::before
jest podobny do operatora address-of (&)
.
type_info::name
Funkcja składowa zwraca wartość do const char*
ciągu zakończonego wartością null reprezentującego nazwę typu czytelną dla człowieka. Wskazywana pamięć jest buforowana i nigdy nie powinna być bezpośrednio dealokowana.
Funkcja składowa jest specyficzna type_info::raw_name
dla firmy Microsoft. Zwraca wartość do const char*
ciągu zakończonego wartością null reprezentującego nazwę ozdobioną typu obiektu. Nazwa jest przechowywana w formie ozdobionej, aby zaoszczędzić miejsce. W związku z tym ta funkcja jest szybsza niż type_info::name
dlatego, że nie musi niezależnie od nazwy. Ciąg zwracany przez type_info::raw_name
funkcję jest przydatny w operacjach porównania, ale nie jest czytelny. Jeśli potrzebujesz ciągu czytelnego dla człowieka, użyj type_info::name
zamiast tego.
Informacje o typie są generowane dla klas polimorficznych tylko wtedy, gdy /GR (Włącz informacje o typie czasu wykonywania) jest określona opcja kompilatora.
Zobacz też
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla