Partilhar via


type_info Classe

A classe type_info descreve informações de tipo geradas dentro do programa pelo compilador. Os objetos dessa classe efetivamente armazenam um ponteiro para um nome para o tipo. A classe type_info também armazena um valor codificado adequado para comparar dois tipos para igualdade ou ordem de agrupamento. As regras de codificação e a sequência de agrupamento para tipos não são especificadas e podem diferir entre programas.

O <typeinfo> arquivo de cabeçalho deve ser incluído para usar a classe type_info . A interface para a 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;
};

Você não pode instanciar objetos da classe type_info diretamente, porque a classe tem apenas um construtor de cópia privada. A única maneira de construir um objeto type_info (temporário) é usar o operador typeid . Como o operador de atribuição também é privado, não é possível copiar ou atribuir objetos de classe type_info.

type_info::hash_code Define uma função de hash adequada para mapear valores do tipo TypeInfo para uma distribuição de valores de índice.

Os operadores == e != podem ser usados para comparar igualdade e desigualdade com outros objetos type_info , respectivamente.

Não há ligação entre a ordem de agrupamento dos tipos e as relações de herança. Use a type_info::before função de membro para determinar a sequência de agrupamento de tipos. Não há nenhuma garantia de que type_info::before irá produzir o mesmo resultado em programas diferentes ou mesmo diferentes execuções do mesmo programa. Desta forma, type_info::before é semelhante ao endereço do (&) operador.

A type_info::name função member retorna a const char* para uma cadeia de caracteres terminada em nulo que representa o nome legível por humanos do tipo. A memória apontada é armazenada em cache e nunca deve ser diretamente deslocalizada.

A type_info::raw_name função de membro é específica da Microsoft. Ele retorna a const char* para uma cadeia de caracteres terminada em nulo que representa o nome decorado do tipo de objeto. O nome é armazenado em sua forma decorada para economizar espaço. Consequentemente, essa função é mais rápida do que type_info::name porque não precisa desdecorar o nome. A cadeia de caracteres retornada pela função é útil em operações de comparação, type_info::raw_name mas não é legível. Se você precisar de uma cadeia de caracteres legível por humanos, use type_info::name em vez disso.

As informações de tipo são geradas para classes polimórficas somente se a opção de compilador /GR (Enable Run-Time Type Information) for especificada.

Ver também

Run-Time informações de tipo