Classe type_info
O type_info classe descreve as informações de tipo geradas dentro do programa pelo compilador.Objetos desta classe efetivamente armazenam um ponteiro para um nome para o tipo.O type_info classe também armazena um valor codificado adequado para comparar dois tipos de igualdade ou ordem de agrupamento.As regras de codificação e a seqüência para tipos de agrupamento não estão especificados e podem ser diferentes entre programas.
O <typeinfo> o arquivo de cabeçalho deve ser incluído para usar o type_info classe.A interface para o type_info classe é:
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 type_info de classe diretamente, porque a classe tem somente um construtor de cópia privada.A única maneira de construir (temporário) type_info objeto é usar o typeid operador.Como o operador de atribuição também é particular, não é possível copiar ou atribuir objetos da classe type_info.
type_info::hash_code define uma função de hash adequada para o mapeamento de valores do tipo typeinfo a uma distribuição de valores de índice.
Os operadores de == e != pode ser usado para comparação de igualdade e desigualdade com outros type_info objetos, respectivamente.
Não há nenhum vínculo entre a ordem de agrupamento dos tipos e as relações de herança.Use o type_info::before a função de membro para determinar a seqüência de agrupamento de tipos.Não há nenhuma garantia que type_info::before produzirá o mesmo resultado em programas diferentes ou até mesmo diferentes execuções do mesmo programa.Dessa maneira, type_info::before é semelhante ao adress-of (&) operador.
O type_info::name a função de membro retorna um const char * como uma seqüência terminada por caractere nulo que representa o nome legível do tipo.A memória apontada é armazenado em cache e nunca deve ser desalocada diretamente.
O type_info::raw_name a função de membro retorna um const char * como uma seqüência terminada por caractere nulo que representa o nome decorado do tipo de objeto.Na verdade, o nome está armazenado em sua forma decorada para economizar espaço.Conseqüentemente, essa função é mais rápida do que type_info::name porque ele não precisa undecorate o nome.A seqüência de caracteres retornada pela type_info::raw_name função é útil para operações de comparação, mas não é legível.Se você precisar de uma seqüência de caracteres legível, use o type_info::name funcionar em vez disso.
Informações sobre o tipo é gerado para se polimórficas de classes a /GR (Ativar informações de tipo em tempo de execução) opção de compilador é especificada.