type_info – třída
Třída type_info popisuje typ informace generované kompilátorem v rámci programu.Objekty této třídy účinně ukládají ukazatel na název typu.Třída type_info také ukládá kódovanou hodnotu vhodnou pro porovnání dvou typů pro rovnost nebo pořadí řazení.Pravidla kódování a pořadí řazení typů nejsou specifikovány a mezi programy se mohou lišit.
Soubor hlaviček <typeinfo> musí být zahrnut pro použití třídy type_info.Rozhraní třídy type_info je:
class type_info {
public:
virtual ~type_info();
size_t hash_code() const
_CRTIMP_PURE bool operator==(const type_info& rhs) const;
_CRTIMP_PURE bool operator!=(const type_info& rhs) const;
_CRTIMP_PURE int before(const type_info& rhs) const;
_CRTIMP_PURE const char* name() const;
_CRTIMP_PURE const char* raw_name() const;
};
Instance objektů třídy type_info nelze vytvořit přímo, protože tato třída má pouze soukromý kopírovací konstruktor.Jediný způsob, jak vytvořit (dočasný) objekt třídy type_info je použít operátor typeid.Protože operátor přiřazení je také soukromý, nelze kopírovat nebo přiřadit objekty třídy type_info.
Funkce type_info::hash_code definuje hashovací funkci, která je vhodná pro mapování hodnot typu typeinfo na rozdělení hodnot indexu.
Operátory == a != lze použít k porovnání rovnosti a nerovnosti s jinými objekty třídy type_info.
Neexistuje žádná souvislost mezi pořadí třídění typů a vztahy dědičnosti.Pomocí členské funkce type_info::before lze určit pořadí řazení typů.Není zaručeno, že funkce type_info::before vrátí stejné výsledky v různých programech nebo dokonce během různých spuštění stejného programu.Tímto způsobem je funkce type_info::before obdobou operátoru adresy (&).
Členská funkce type_info::name vrátí ukazatele const char* na řetězec zakončený hodnotou null představující název typu, který lze přečíst.Paměť, na kterou je odkazováno je uložena do mezipaměti a neměla by nikdy být odebrána přímo.
Členská funkce type_info::raw_name vrátí ukazatele const char* na řetězec zakončený hodnotou null představující upravený název typu objektu.Ve skutečnosti je název pro úsporu místa uložen v upravené podobě.Tato funkce je rychlejší než funkce type_info::name, protože není nutné rušit úpravu názvu.Řetězec vrácený funkcí type_info::raw_name je užitečný v operacích porovnávání, ale není čitelný.Pokud potřebujete řetězec, který lze přečíst, použijte namísto toho funkci type_info::name.
Informace o typu je pro polymorfní třídy vygenerována pouze tehdy, pokud je zadána možnost /GR (Povolit informace o typu modulu run-time) kompilátoru.