Classes et structs (extensions du composant C++)
Déclare une classe ou une structure dont la durée de vie des objets est gérée automatiquement.Lorsque l'objet n'est plus accessible ou est hors de portée, Visual C++ ignore automatiquement la mémoire allouée à l'objet.
Tous les runtimes
Syntaxe
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 {};
Paramètres
class_access (facultatif)
L'accessibilité de la classe ou de la structure à l'extérieur de l'assembly.Les valeurs possibles sont public et private (private est la valeur par défaut).Les classes ou les structures imbriquées ne peuvent pas avoir de spécificateur class_access.name
Nom de la classe ou de la structure.modificateur (facultatif)
Les modificateurs abstract et sealed sont des modificateurs valides.inherit_access (facultatif)
L'accessibilité de base_type.La seule accessibilité autorisée est public (public est la valeur par défaut).base_type (facultatif)
Un type de base.Toutefois, un type valeur ne peut pas faire office de type de base.Pour plus d'informations, consultez les descriptions propres au langage de ce paramètre dans les sections Windows Runtime et Common Language Runtime.
Remarques
L'accessibilité des membres par défaut d'un objet déclaré avec la classe ref ou la classe value est private.Et l'accessibilité des membres par défaut d'un objet déclaré avec ref struct ou value struct est public.
Lorsqu'un type référence hérite d'un autre type référence, des fonctions virtuelles de la classe de base doivent être substituées explicitement (avec substituer (extensions du composant C++)) ou être masquées (avec nouveau (nouvel emplacement dans vtable) (extensions du composant C++)).Les fonctions de classes dérivées doivent également être marquées explicitement comme virtual.
Pour détecter au moment de la compilation si un type est une ref class ou une ref struct, ou une value class ou une value struct, utilisez __is_ref_class (type), __is_value_class (type), ou __is_simple_value_class (type).Pour plus d'informations, consultez Prise en charge du compilateur pour les Type Traits (extensions du composant C++).
Pour plus d'informations sur les classes et les structures, consultez
Sémantique de ce pointeur dans les types valeur et référence
Définissez les constructeurs statiques dans une classe ou un structure
Comment : inclure une classe native dans un wrapper pour une utilisation par C#
Windows Runtime
Remarques
Consultez Classes et structures de référence et Classes de valeur et structures de valeur.
Paramètres
base_type (facultatif)
Un type de base.ref class ou ref struct peut hériter de zéro, une ou plusieurs interfaces et de zéro, un ou plusieurs types ref.value class ou value struct peut seulement hériter de zéro, une ou plusieurs interfaces.Lorsque vous déclarez un objet à l'aide des mots clés ref class ou ref struct, l'objet est accédé par un handle vers un objet ; autrement dit, un pointeur de compteur de références vers l'objet.Lorsque la variable déclarée est hors de portée, le compilateur supprime automatiquement l'objet sous-jacent.Lorsque l'objet est utilisé comme paramètre dans un appel ou est stocké dans une variable, un handle vers l'objet est effectivement passé ou stocké.
Lorsque vous déclarez un objet à l'aide des mots clés value class ou value struct, la durée de vie de l'objet déclaré n'est pas surveillée.L'objet est comme toute autre classe ou structure standard C++.
Configuration requise
Option du compilateur : /ZW
Common Language Runtime
Remarques
Le tableau suivant répertorie les différences de syntaxe indiquée dans la section Tous les runtimes qui sont spécifiques à C++/CLI.
Paramètres
base_type (facultatif)
Un type de base.ref class ou ref struct peut hériter de zéro, une ou plusieurs interfaces managées et de zéro, un ou plusieurs types de référence.value class ou value struct peut seulement hériter de zéro, une ou plusieurs interfaces managées.Les mots clés ref class et ref struct indiquent au compilateur que la classe ou la structure doit être allouée sur le tas.Lorsque l'objet est utilisé comme paramètre dans un appel ou est stocké dans une variable, une référence à l'objet est en fait passée ou stockée.
Les mots clés value class et value struct indiquent au compilateur que la valeur de la classe ou de la structure allouée est passée aux fonctions ou est stockée dans les membres.
Configuration requise
Option du compilateur : /clr