Share via


Clases y structs (Extensiones de componentes de C++)

Declara una clase o struct cuya duración de objetos se administra automáticamente. Cuando el objeto ya no es accesible o sale del ámbito, Visual C++ descarta automáticamente la memoria asignada al objeto.

Todos los runtimes

Sintaxis

class_access ref class     name modifier :  inherit_access base_type {};
class_access ref struct    name modifier :  inherit_access base_type {};
class_access value class   name modifier :  inherit_access base_type {};
class_access value struct name modifier :  inherit_access base_type {};

Parámetros

  • class_access (opcional)
    Accesibilidad de la clase o struct fuera del ensamblado. Los valores posibles son public y private (private es el valor predeterminado). Las clases anidadas o los structs no puede tener un especificador de class_access .

  • name
    Nombre de la clase o estructura.

  • modifier (opcional)
    abstract y sealed son modificadores válidos.

  • inherit_access (opcional)
    Accesibilidad de base_type. La única accesibilidad permitida es public (public es el valor predeterminado).

  • base_type (opcional)
    Tipo base. Sin embargo, un tipo de valor no puede actuar como tipo base.

    Para obtener más información, vea las descripciones específicas del lenguaje de este parámetro en las secciones Windows en tiempo de ejecución y Common Language Runtime .

Comentarios

La accesibilidad de miembro predeterminada de un objeto declarado con la clase de referencia o la clase de valor es private. Y la accesibilidad de miembro predeterminada de un objeto declarado con ref struct o value struct es public.

Cuando un tipo de referencia se hereda de otro tipo de referencia, las funciones virtuales de la clase base deben reemplazarse explícitamente (con override (Extensiones de componentes de C++)) u ocultarse (con new (nueva ranura en vtable) (Extensiones de componentes de C++)). Las funciones de clase derivada deben marcarse explícitamente como virtual.

Para detectar en tiempo de compilación si un tipo es ref class o ref struct, o value class o value struct, use __is_ref_class (type), __is_value_class (type) o __is_simple_value_class (type). Para obtener más información, vea Compatibilidad de compilador para type traits (Extensiones de componentes de C++).

Para obtener más información acerca de clases y structs, vea

Windows en tiempo de ejecución

Comentarios

Vea Clases y structs de referencia y Clases y structs de valor.

Parámetros

  • base_type (opcional)
    Tipo base. ref class o ref struct pueden heredar a partir de cero o más interfaces y cero o uno de los tipos ref. value class o value struct sólo puede heredar a partir de cero o más interfaces.

    Cuando se declara un objeto mediante las palabras clave ref class o ref struct, se tiene acceso al objeto con un identificador de objeto; es decir, un puntero de contador de referencias al objeto. Cuando la variable declarada sale del ámbito, el compilador elimina automáticamente el objeto subyacente. Cuando se utiliza como un parámetro en una llamada o se almacena el objeto en una variable, un identificador del objeto se pasa o se almacena realmente.

    Cuando se declara un objeto mediante las palabras clave value class o value struct, la duración del objeto declarado no se supervisa. El objeto se parece a cualquier otra clase o struct estándar de C++.

Requisitos

Opción del compilador: /ZW

Common Language Runtime

Comentarios

En la tabla siguiente se enumeran las diferencias de la sintaxis mostrada en la sección Todos los runtimes específicas de C++/CLI.

Parámetros

  • base_type (opcional)
    Tipo base. ref class o ref struct puede heredar a partir de cero o más interfaces administradas y cero o uno de los tipos ref. value class o value struct sólo puede heredar a partir de cero o más interfaces administradas.

    Las palabras clave ref class y ref struct indican al compilador que la clase o estructura debe asignarse en el montón. Cuando se utiliza como un parámetro en una llamada o se almacena el objeto en una variable, una referencia al objeto se pasa o se almacena realmente.

    Las palabras clave de value class y de value struct indica al compilador que el valor de la clase o estructura asignada se dedica a funciones o almacenado en miembros.

Requisitos

Opción del compilador: /clr

Vea también

Conceptos

Extensiones de componentes para plataformas de tiempo de ejecución