Fonctionnalités de langage pour cibler le CLR

Visual C++ fournit des extensions de langage pour vous aider à programmer les plateformes d'exécution. Grâce à Extensions de composant Visual C++ (C++/CX), programmez vos applications et composantsWindows Store qui compilent en code natif. Bien que vous puissiez créer vos applications Windows Store en programmant directement sur les interfaces COM Windows Runtime, à l'aide de C++/CX, utilisez des constructeurs, des exceptions, et d'autres idiomes modernes de programmation C++. Pour activer la programmation C++ dans un environnement d'exécution managé sur la plateforme .NET., utilisez C++/CLI.

Deux runtimes, un jeu d'extensions

C++/CX est un sous-ensemble de C++/CLI. Pour les extensions qui sont communes à C++/CX et C++/CLI, la sémantique varie selon que vous ciblez le Common Langage Runtime (CLR) ou bien Windows Runtime. Pour compiler votre application pour s'exécuter sur Windows Runtime, vous devez spécifier l'option /ZW du compilateur. Pour la compilation pour s'exécuter sur le CLR, vous devez spécifie l'option /clr du compilateur. Ces commutateurs sont définis automatiquement lorsque vous utilisez Visual Studio pour créer un projet.

Pour plus d'informations sur la création d'applications Windows Store en C#, consultez la page Roadmap for Windows Store apps using C++.

C++/CLI étend le standard d'ISO/ANSI C++, et est défini sous le standard Ecma C++/CLI. Pour plus d'informations, consultez Programmation .NET dans Visual C++.

Mots clés de types de données

Les extensions de langage incluent les mots clés agrégats, qui sont des mots clés qui sont composés de deux jetons séparés par un espace blanc. Les jetons peuvent avoir un sens différent lorsqu'ils sont utilisés séparément et lorsqu'ils sont utilisés ensemble. Par exemple, le mot « référence » est un identificateur ordinaire, et le mot « classe » est un mot clé qui déclare une classe native. Mais lorsque ces mots sont combinés pour former ref class, le mot clé agrégat résultant déclare une entité qui est appelée une classe de runtime.

Les extensions incluent également des mots clés contextuels. Un mot clé est traité comme contextuel selon le type d'instruction qui le contient, et son positionnement dans cette instruction. Par exemple, le jeton « propriété » peut être un identificateur, ou il peut déclarer un genre particulier de classe publique.

Le tableau suivant répertorie les mots clés de l'extension C++.

Mot clé

Contextuel

Objectif

Référence

ref class

ref struct

Non

Déclare une classe.

Classes et structures (géré)

value class

value struct

Non

Déclare une valeur de classe.

Classes et structures (géré)

interface class

interface struct

Non

Déclare une interface.

classe d'interface

enum class

enum struct

Non

Déclare une énumération.

classe d'enum

property

Oui

Déclare une propriété.

propriété

delegate

Oui

Déclare un délégué.

delegate

event

Oui

Déclare un événement.

événement (Visual C++)

Spécificateurs de substitution

Utilisez les mots clés suivants pour définir le comportement de substitution pour la dérivation. Même si le mot clé new n'est pas une extension C++, il apparaît ici car il peut être utilisé dans un contexte supplémentaire. Certains spécificateurs sont également valides pour la programmation native. Pour plus d'informations, consultez Comment : Déclarez les spécificateurs de substitution dans les compilations natives.

Mot clé

Contextuel

Objectif

Référence

abstract

Oui

Indique que les fonctions ou les classes sont abstraites.

résumé (Visual C++)

new

Non

Indique qu'une fonction n'est pas une substitution d'une version de classe de base.

nouveau (nouvel emplacement dans vtable)

override

Oui

Indique qu'une méthode doit être une substitution d'une version de classe de base.

override

sealed

Oui

Empêche les classes d'être utilisées comme des classes de base.

sealed (extensions du composant C++)

Mots clés pour les Génériques.

Les mots clés suivants ont été ajoutés pour permettre la compatibilité avec les types génériques. Pour plus d'informations, consultez génériques (Visual C++).

Mot clé

Contextuel

Objectif

generic

Non

Déclare un type générique.

where

Oui

Spécifie les contraintes appliquées à un paramètre de type générique.

Divers mots clés

Les mots clés suivants ont été ajoutés aux extensions C++.

Mot clé

Contextuel

Objectif

Référence

finally

Oui

Indique le comportement par défaut de la gestion d'exceptions.

gestion des exceptions sous /clr

for each, in

Non

Enumère les éléments d'une collection.

pour chaque, dans

gcnew

Non

Alloue des types sur le tas récupéré par le récupérateur de mémoire. A utiliser au lieu de new et delete.

gcnew

ref new

Oui

Alloue un type Windows Runtime. A utiliser au lieu de new et delete.

gcnew

initonly

Oui

Indique qu'un membre peut être initialisé à la déclaration ou dans un constructeur statique.

initonly

literal

Oui

Crée une variable littérale.

littéral (Visual C++)

nullptr

Non

Indique qu'un handle ou un pointeur ne pointe pas vers un objet.

nullptr

Constructions de modèle

Les constructions de langage suivantes sont implémentées comme des modèles, et non comme des mots clés. Si vous spécifiez l'option /ZW du compilateur, elles sont définies dans l'espace de noms lang. Si vous spécifiez l'option /clr du compilateur, elles sont définies dans l'espace de noms cli.

Mot clé

Objectif

Référence

array

Déclare un tableau.

tableau (Visual C++)

interior_ptr

(CLR uniquement) pointe vers les données dans un type référence.

interior_ptr

pin_ptr

(CLR uniquement) pointe vers les types référence CLR pour supprimer temporairement le système de garbage collection.

pin_ptr

safe_cast

Détermine et exécute la méthode optimale de casting pour un type d'exécution.

safe_cast

typeid

(CLR uniquement) récupère un objet Type qui décrit le type ou l'objet donné.

typeid

Déclarateurs

Les déclarateurs de type suivants demandent au runtime de gérer automatiquement la durée de vie et la suppression des objets alloués.

Opérateur

Objectif

Référence

^

Déclare un handle vers un objet ; autrement dit, un pointeur vers un Windows Runtime ou vers un objet CLR qui est automatiquement supprimé lorsqu'il n'est plus utilisable.

^ (handle vers l'objet sur le tas managé)

%

Déclare une référence de suivi ; autrement dit, une référence vers un Windows Runtime ou vers un objet CLR qui est automatiquement supprimé lorsqu'il n'est plus utilisable.

% (suivi des références)

Constructions supplémentaires et rubriques connexes

Cette section répertorie les constructions de programmation supplémentaires, et les rubriques relatives au CLR.

Rubrique

Description

__identifier

(Windows Runtime et CLR) permet l'utilisation des mots clés comme identificateurs.

... (Listes d'arguments variables)

(Windows Runtime et CLR) permet à une fonction de prendre un nombre variable d'arguments.

Équivalents .NET Framework des types natifs C++ (C++/CLI)

Répertorie les types CLR qui sont utilisés plutôt que des types intégraux C++.

modificateur appdomain __declspec

Le modificateur __declspec qui mandate que les variables statiques et globales existent pour appdomain.

casts de style C avec /clr

Décrit comment les casts de style similaire au C sont interprétés.

Convention d'appel __clrcall

Indique la convention d'appel conforme CLR.

__cplusplus_cli

Macros prédéfinies

Attributs personnalisés (C++)

Décrit comment définir vos propres attributs CLR.

gestion des exceptions sous /clr

Fournit une présentation de la gestion des exceptions.

substitutions explicites

Montre comment les fonctions membres peuvent se substituer aux membres aléatoires.

Assemblys friend (C++)

Décrit comment un assembly client peut accéder à tous les types dans un composant d'assembly.

Conversion boxing implicite

Montre les conditions dans lesquelles les types de valeurs sont boxés.

Prise en charge du compilateur des caractéristiques de type

Explique comment détecter les caractéristiques des types au moment de la compilation.

Directives managé, non managé.

Montre comment les fonctions managées et non managées peuvent coexister dans le même module.

modificateur de processus __declspec

Le modificateur __declspec mandate que les variables statiques et globales existent pour pour le processus.

Réflexion (C++/CLI)

Illustre la version CLR de la Run-time Type Information.

System : : Gestion des chaînes dans Visual C++

Décrit la conversion par le compilateur littéraux de chaîne en String.

transfert de type

Active le déplacement d'un type dans un assembly de départ vers un autre assembly afin que le code client ne doit pas être recompilé.

attributs définis par l'utilisateur

Illustre les attributs définis par l'utilisateur.

#using, directive (C++)

Importe des assemblys externes.

Documentation XML (Visual C++)

Explique la documentation de code XML en utilisant /doc (Traiter les commentaires de documentation) (C/C++)

Voir aussi

Autres ressources

Programmation .NET dans Visual C++

Interopérabilité native et .NET