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. |
|
value class value struct |
Non |
Déclare une valeur de classe. |
|
interface class interface struct |
Non |
Déclare une interface. |
|
enum class enum struct |
Non |
Déclare une énumération. |
|
property |
Oui |
Déclare une propriété. |
|
delegate |
Oui |
Déclare un délégué. |
|
event |
Oui |
Déclare un événement. |
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. |
|
new |
Non |
Indique qu'une fonction n'est pas une substitution d'une version de classe de base. |
|
override |
Oui |
Indique qu'une méthode doit être une substitution d'une version de classe de base. |
|
sealed |
Oui |
Empêche les classes d'être utilisées comme des classes de base. |
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. |
|
for each, in |
Non |
Enumère les éléments d'une collection. |
|
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. |
|
ref new |
Oui |
Alloue un type Windows Runtime. A utiliser au lieu de new et delete. |
|
initonly |
Oui |
Indique qu'un membre peut être initialisé à la déclaration ou dans un constructeur statique. |
|
literal |
Oui |
Crée une variable littérale. |
|
nullptr |
Non |
Indique qu'un handle ou un pointeur ne pointe pas vers un objet. |
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. |
|
interior_ptr |
(CLR uniquement) pointe vers les données dans un type référence. |
|
pin_ptr |
(CLR uniquement) pointe vers les types référence CLR pour supprimer temporairement le système de garbage collection. |
|
safe_cast |
Détermine et exécute la méthode optimale de casting pour un type d'exécution. |
|
typeid |
(CLR uniquement) récupère un objet Type qui décrit le type ou l'objet donné. |
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. |
|
% |
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. |
Constructions supplémentaires et rubriques connexes
Cette section répertorie les constructions de programmation supplémentaires, et les rubriques relatives au CLR.
Rubrique |
Description |
---|---|
(Windows Runtime et CLR) permet l'utilisation des mots clés comme identificateurs. |
|
(Windows Runtime et CLR) permet à une fonction de prendre un nombre variable d'arguments. |
|
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. |
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 |
|
Décrit comment définir vos propres attributs CLR. |
|
Fournit une présentation de la gestion des exceptions. |
|
Montre comment les fonctions membres peuvent se substituer aux membres aléatoires. |
|
Décrit comment un assembly client peut accéder à tous les types dans un composant d'assembly. |
|
Montre les conditions dans lesquelles les types de valeurs sont boxés. |
|
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. |
Illustre la version CLR de la Run-time Type Information. |
|
Décrit la conversion par le compilateur littéraux de chaîne en String. |
|
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é. |
|
Illustre les attributs définis par l'utilisateur. |
|
Importe des assemblys externes. |
|
Explique la documentation de code XML en utilisant /doc (Traiter les commentaires de documentation) (C/C++) |