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_codedefiniuje 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ż

Informacje o typach uzyskiwane w czasie rzeczywistym