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

 

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

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

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)
La 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.

name
Nombre de la clase o struct.

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 correspondientes a este parámetro que aparecen en las secciones Windows en tiempo de ejecución y Common Language Runtime.

Comentarios

La accesibilidad de miembro predeterminada de un objeto declarado con ref class o value class es private, mientras que 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) u ocultarse (con new (nueva ranura en vtable)). Las funciones de la clase derivada también 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, consulte Compatibilidad de compilador para type traits.

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

Comentarios

Vea Ref (clases y structs) y Value (clases y structs).

Parámetros

base_type (opcional)
Tipo base. ref class o ref struct pueden heredar de cero o más interfaces y de cero o un tipo ref. value class o value struct solo pueden heredar de cero o más interfaces.

Al declarar un objeto mediante las palabras clave ref class o ref struct, se obtiene acceso al objeto con un identificador de objeto, es decir, un puntero de contador de referencias al objeto. Cuando la variable declarada se 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 es como cualquier otra clase o struct estándar de C++.

Requisitos

Opción del compilador: /ZW

Comentarios

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

Parámetros

base_type (opcional)
Tipo base. ref class o ref struct pueden heredar de cero o más interfaces administradas y de cero o un tipo ref. value class o value struct solo pueden heredar 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

Extensiones de componentes para plataformas de tiempo de ejecución

Mostrar: