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_code
definuje 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é
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro