Compartilhar via


Classe type_info

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

O <typeinfo> arquivo de cabeçalho deve ser incluído para usar a classe type_info. A interface da classe type_info é:

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

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

type_info::hash_code define uma função de hash adequada para mapear valores de tipo typeinfo para uma distribuição de valores de índice.

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

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

A função de membro type_info::name retorna const char* a uma cadeia de caracteres com terminação nula que representa o nome legível do tipo. A memória apontada é armazenada em cache e nunca deve ser desalocada diretamente.

A função de membro type_info::raw_name retorna const char* a uma cadeia de caracteres com terminação nula 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 que type_info::name porque não precisa do nome não decorado. A cadeia de caracteres retornada pela função type_info::raw_name é útil nas operações de comparação, mas não é legível. Se você precisar de uma cadeia de caracteres legível, use a função type_info::name.

As informações de tipo serão geradas para classes polimórficas apenas se a opção de compilador /GR (Habilitar as informações de tipo de tempo de execução) for especificada.

Consulte também

Referência

Informações de tipo de tempo de execução