Classe type_info
La classe type_info descrive le informazioni sul tipo generate all'interno del programma dal compilatore. Gli oggetti di questa classe consentono di archiviare un puntatore a un nome per il tipo. La classe type_info archivia anche un valore codificato adatto per confrontare due tipi per l'uguaglianza o l'ordine di confronto. Le regole di codifica e la sequenza di ordinamento per i tipi non sono specificate e possono variare in base al programma.
Il <typeinfo>
file di intestazione deve essere incluso per usare la classe type_info . L'interfaccia per la classe type_info è:
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;
};
Non è possibile creare direttamente un'istanza di oggetti della classe type_info , perché la classe ha solo un costruttore di copia privata. L'unico modo per costruire un oggetto (temporaneo) type_info consiste nell'usare l'operatore typeid . Poiché l'operatore di assegnazione è anche privato, non è possibile copiare o assegnare oggetti di classe type_info.
type_info::hash_code
definisce una funzione hash adatta per il mapping dei valori di typeinfo a una distribuzione di valori di indice.
Gli operatori ==
e !=
possono essere usati per confrontare rispettivamente l'uguaglianza e la disuguaglianza con altri oggetti type_info .
Non esiste alcun collegamento tra l'ordinamento dei tipi e le relazioni di ereditarietà. Usare la type_info::before
funzione membro per determinare la sequenza di confronto dei tipi. Non c'è garanzia che type_info::before
produrrà lo stesso risultato in programmi diversi o persino esecuzioni diverse dello stesso programma. In questo modo, type_info::before
è simile all'operatore address-of (&)
.
La type_info::name
funzione membro restituisce un oggetto const char*
a una stringa con terminazione Null che rappresenta il nome leggibile del tipo. La memoria a cui si fa riferimento viene memorizzata nella cache e non deve essere mai direttamente deallocata.
La type_info::raw_name
funzione membro è specifica di Microsoft. Restituisce un oggetto const char*
a una stringa con terminazione Null che rappresenta il nome decorato del tipo di oggetto. Il nome viene archiviato nel formato decorato per risparmiare spazio. Di conseguenza, questa funzione è più veloce rispetto type_info::name
a perché non è necessario annullare la dedecorate del nome. La stringa restituita dalla type_info::raw_name
funzione è utile nelle operazioni di confronto, ma non è leggibile. Se è necessaria una stringa leggibile, usare type_info::name
invece .
Le informazioni sul tipo vengono generate per le classi polimorfiche solo se viene specificata l'opzione del compilatore /GR (Abilita informazioni sul tipo di runtime).
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per