Share via


type_info (Clase)

La clase type_info describe la información de tipo generada en el programa por el compilador. Los objetos de esta clase almacenan de forma eficaz un puntero a un nombre para el tipo. La clase type_info también almacena un valor codificado adecuado para comparar dos tipos en cuanto a igualdad u orden de intercalación. Las reglas de codificación y la secuencia de intercalación para tipos no se especifican y pueden diferir entre programas.

El archivo de encabezado <typeinfo> debe incluirse para utilizar la clase type_info. La interfaz para la clase type_info es:

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

No puede crear instancias de objetos de la clase type_info directamente porque la clase solo tiene un constructor de copias privado. La única manera de crear un objeto type_info (temporal) es utilizar el operador typeid. Como el operador de asignación también es privado, no puede copiar ni asignar objetos de la clase type_info.

type_info::hash_code define una función hash adecuada para asignar valores de tipo typeinfo a una distribución de valores de índice.

Los operadores == y != se pueden utilizar para comparar la igualdad y la desigualdad con otros objetos type_info, respectivamente.

No hay ningún vínculo entre el orden de intercalación de tipos y las relaciones de herencia. Utilice la función miembrotype_info::before para determinar la secuencia de intercalación de tipos. No hay ninguna garantía de que type_info::before produzca el mismo resultado en programas diferentes o incluso ejecuciones diferentes del mismo programa. De esta manera, type_info::before es similar al operador (&) address-of.

La función miembro type_info::name devuelve const char* a una cadena finalizada en null que representa el nombre legible del tipo. La memoria a la que se señala se almacena en caché y nunca debe desasignarse directamente.

La type_info::raw_name función miembro es específica de Microsoft. Devuelve a const char* una cadena terminada en NULL que representa el nombre decorado del tipo de objeto. El nombre se almacena en su forma decorada para ahorrar espacio. Por consiguiente, esta función es más rápida que type_info::name porque no necesita anular la aplicación de nombre representativo. La cadena devuelta por la función type_info::raw_name es útil en operaciones de comparación pero no es legible. Si necesita una cadena legible, use type_info::name en su lugar.

La información de tipo se genera para las clases polimórficas solo si se especifica la opción del compilador /GR (Habilitar información de tipo en tiempo de ejecución).

Consulte también

Información de tipos en tiempo de ejecución