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 pueden tener un especificador class_access.nombre
Nombre de la clase o estructura.modificador (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 ref 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 el objeto se usa como parámetro en una llamada o se almacena en una variable, se pasa o se almacena realmente un identificador del objeto.
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 el objeto se usa como parámetro en una llamada o se almacena en una variable, se pasa o se almacena realmente una referencia al objeto.
Las palabras clave value class y value struct indican al compilador que el valor de la clase o estructura asignada se pasa a funciones o se almacena en miembros.
Requisitos
Opción del compilador: /clr
Vea también
Conceptos
Extensiones de componentes para plataformas de tiempo de ejecución