Classes et structures (géré)

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.

  • modifier (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 override) ou être masquées (avec nouveau (nouvel emplacement dans vtable)). 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 des caractéristiques de type.

Pour plus d'informations sur les classes et les structures, consultez

Windows Runtime

Remarques

Consultez Classes et structs de référence et Classes et structs 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++.

Conditions requises

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.

Conditions requises

Option du compilateur : /clr

Voir aussi

Concepts

Fonctionnalités de langage pour cibler le CLR