Sdílet prostřednictvím


type_info – třída

Třída type_info popisuje informace o typu generované v rámci programu kompilátorem. Objekty této třídy účinně ukládají ukazatel na název typu. Třída type_info také ukládá zakódovanou hodnotu, která je vhodná pro porovnání dvou typů pro rovnost nebo kolaci pořadí. Pravidla kódování a pořadí řazení typů nejsou specifikována a mezi programy se mohou lišit.

Soubor <typeinfo> hlavičky musí být zahrnut, aby bylo možné použít třídu type_info . Rozhraní pro třídu type_info je:

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;
};

Nelze vytvořit instanci objektů type_info třídy přímo, protože třída má pouze soukromý konstruktor kopírování. Jediným způsobem, jak vytvořit (dočasný) type_info objekt, je použít typeid operátor. Vzhledem k tomu, že operátor přiřazení je také soukromý, nelze kopírovat ani přiřazovat objekty type_info třídy.

type_info::hash_codedefinuje funkci hash, která je vhodná pro mapování hodnot typeinfo na distribuci hodnot indexu.

Operátory == a != lze je použít k porovnání rovnosti a nerovnosti s jinými type_info objekty.

Neexistuje žádná souvislost mezi pořadím řazení typů a vztahy dědičnosti. type_info::before Pomocí členské funkce určete pořadí kolací typů. Neexistuje žádná záruka, která type_info::before by přinesla stejný výsledek v různých programech nebo dokonce různých spuštěních stejného programu. Tímto způsobem type_info::before se podobá operátoru address-of (&) .

Členová type_info::name funkce vrátí const char* řetězec ukončený hodnotou null, který představuje název typu čitelný pro člověka. Paměť, na kterou je odkazováno, je uložena do mezipaměti a neměla by nikdy být odebrána přímo.

Členová type_info::raw_name funkce je specifická pro Microsoft. Vrátí const char* řetězec s ukončenou hodnotou null představující zdobený název typu objektu. Název je uložen v jeho zdobené podobě, aby ušetřil místo. V důsledku toho je tato funkce rychlejší než type_info::name proto, že nemusí název zrušit. Řetězec vrácený type_info::raw_name funkcí je užitečný v operacích porovnání, ale není čitelný. Pokud potřebujete řetězec čitelný pro člověka, použijte type_info::name místo toho.

Informace o typu se generují pro polymorfní třídy pouze v případě, že je zadána možnost kompilátoru /GR (Povolit informace o typu za běhu).

Viz také

Informace o typu modulu runtime