Classi e struct (Estensioni del componente C++)
Dichiara una classe o una struct dove il tempo di vita dell'oggetto viene amministrato automaticamente.Quando l'oggetto non è più accessibile o esce dall'ambito, Visual C++ rimuove automaticamente la memoria che è stata allocata per l'oggetto.
Tutti i runtime
Sintassi
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 {};
Parametri
class_access (facoltativo)
L'accessibilità della classe o della struct al di fuori dell'assembly.I valori possibili sono public e private (private è l'impostazione predefinita).Le classi annidate o le struct non possono avere un identificatore class_access.name
Nome della classe o della struct.modifier (facoltativo)
abstract e sealed sono modificatori validi.inherit_access (facoltativo)
L'accessibilità a base_type.L'unica accessibilità valida è public (public è l'impostazione predefinita).base_type (facoltativo)
Un tipo base.Tuttavia, un tipo di valore non può essere utilizzato come tipo di base.Per ulteriori informazioni, vedere le descrizioni specifiche del linguaggio per questo parametro nelle sezioni Common Language Runtime e Windows Runtime.
Note
L'accessibilità predefinita del membro di un oggetto dichiarato con ref class o con value class è private.E l'accessibilità predefinita del membro di un oggetto dichiarato con ref struct o value struct è public.
Quando un tipo di riferimento eredita da un altro tipo di riferimento, le funzioni virtuali della classe base devono subire in modo esplicito l'override (con override (Estensioni del componente C++)) o devono essere nascoste (con nuovo (nuovo slot in vtable) (Estensioni del componente C++)).Le funzioni della classe derivata devono inoltre essere contrassegnate in modo esplicito come virtual.
Per rilevare in fase di compilazione se un tipo è ref class o ref struct, oppure è value class o value struct, utilizzare __is_ref_class (type), __is_value_class (type), o __is_simple_value_class (type).Per ulteriori informazioni, vedere Supporto del compilatore per tratti di tipo (Estensioni del componente C++).
Per ulteriori informazioni sulle classi e sulle struct, vedere
Windows Runtime
Note
Vedere la pagina relative a classi e struct di riferimento e quella relativa a classi e struct di valore.
Parametri
base_type (facoltativo)
Un tipo base.Una ref class o una ref struct può ereditare da zero o più interfacce e da zero o un tipo ref.Una value class o una value struct può ereditare solo da zero o più interfacce.Quando si dichiara un oggetto utilizzando le parole chiave ref struct o ref class, l'accesso all'oggetto viene eseguito mediante un handle all'oggetto, ovvero un puntatore di riferimento con contatore all'oggetto.Quando la variabile dichiarata va al di fuori dell'ambito, il compilatore rimuove automaticamente l'oggetto sottostante.Quando l'oggetto viene utilizzato come parametro in una chiamata o viene memorizzato in una variabile, viene effettivamente passato o memorizzato un handle all'oggetto.
Quando si dichiara un oggetto utilizzando le parole chiave value struct o value class, il tempo di vita dell'oggetto dichiarato non viene controllato.L'oggetto si comporta come una qualsiasi altra classe o struct di C++ standard.
Requisiti
Opzione del compilatore: /ZW
Common Language Runtime
Note
La seguente tabella elenca le differenze della sintassi illustrata nella sezione Tutti i runtime specifica di C++/CLI.
Parametri
base_type (facoltativo)
Un tipo base.Una ref class o una ref struct può ereditare da zero o più interfacce gestite e da zero o un tipo di riferimento.Una value class o una value struct può ereditare solo da zero o più interfacce gestite.Le parole chiave ref struct e ref class indicano al compilatore che la classe o la struct deve essere allocata nello heap.Quando l'oggetto viene utilizzato come parametro in una chiamata o viene memorizzato in una variabile, viene effettivamente passato o memorizzato un riferimento all'oggetto.
Le parole chiave value struct e value class indicano al compilatore che il valore della classe o della struct allocata viene passato alle funzioni o viene memorizzato nei membri.
Requisiti
Opzione del compilatore: /clr