Extensions de composant pour les plateformes Runtime
Visual C++ fournit des extensions de langage pour vous aider à programmer les plateformes d'exécution.À l'aide de Extensions de composant Visual C++ (C++/CX), vous pouvez programmer les applications et les composants d' Windows Store qui compilent en code natif.Bien que vous puissiez créer des applications d' Windows Store par programmation directement sur les interfaces COM d' Windows Runtime , à l'aide de C++/CX, vous pouvez utiliser des constructeurs, des exceptions, et d'autres idiomes modernes de programmation C++.Pour activer la programmation en C++ dans un environnement d'exécution managé sur la plateforme .NET., vous pouvez utiliser 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 dépend de si vous ciblez le common langage runtime (CLR) ou Windows Runtime.Pour compiler votre application s'exécute sur Windows Runtime, spécifiez l'option du compilateur pour /ZW .Pour la compilation pour exécuter sur le CLR, spécifiez l'option du compilateur pour /clr .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 d' Windows Store en C++, consultez Roadmap for Windows Store apps using C++.
C++/CLI étend la norme d'ISO/ANSI C++, et est défini sous la norme ECMA C++/CLI .Pour plus d’informations, consultez programmation. NET dans Visual C++.
Mots clés de type de données
Les extensions de langage incluent les mots clés globaux, qui sont des mots clés qui sont composés de deux jetons séparés par un espace blanc.Les marques peuvent avoir un est ce qui signifie lorsqu'elles sont utilisées séparément, et une signification différente 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é global résultant déclare une entité qui est appelée une classe d'exécution.
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 de son positionnement dans cette instruction.Par exemple, « propriété » jeton peut être un identificateur, il peut déclarer un type spécial de membre de classe publique.
Le tableau suivant répertorie les mots clés dans l'extension du langage C++.
Mot clé |
Sensible au contexte |
Objectif |
Référence |
---|---|---|---|
ref class ref struct |
Non |
Déclare une classe. |
|
value class value struct |
Non |
Déclare une classe de valeur. |
|
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
Vous pouvez utiliser les mots clés suivants pour qualifier le comportement de priorité pour la dérivation.Bien que le mot clé d' 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é |
Sensible au contexte |
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. |
nouveau (nouvel emplacement dans vtable) (extensions du composant C++) |
override |
Oui |
Indique qu'une méthode doit être une substitution d'une version de classe de base. |
|
sealed |
Oui |
Empêché d'être utilisée comme classe de base. |
Mots clés pour les génériques
Les mots clés suivants ont été ajoutés aux types de générique de charge.Pour plus d’informations, consultez Génériques (extensions du composant C++).
Mot clé |
Sensible au contexte |
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é |
Sensible au contexte |
Objectif |
Référence |
---|---|---|---|
finally |
Oui |
Indique le comportement par défaut de gestions d'exceptions. |
|
for each, in |
Non |
Énumère les éléments d'une collection. |
|
gcnew |
Non |
Alloue des types sur le tas récupéré par le garbage collector.Utilisez à la place d' new et d' delete. |
|
ref new |
Oui |
Alloue un type d' Windows Runtime .Utilisez à la place d' new et d' delete. |
|
initonly |
Oui |
Indique qu'un membre ne peut être initialisé à la déclaration ou dans un constructeur static. |
|
literal |
Oui |
Crée une variable littérale. |
|
nullptr |
Non |
Indique qu'un handle ou un pointeur ne pointe pas vers un objet. |
Éléments de modèle
Les constructions de langage suivants sont implémentées comme des modèles, et non comme des mots clés.Si vous spécifiez l'option du compilateur pour /ZW , elles sont définies dans l'espace de noms d' lang .Si vous spécifiez l'option du compilateur pour /clr , elles sont définies dans l'espace de noms d' cli .
Mot clé |
Objectif |
Référence |
---|---|---|
array |
Déclare un tableau. |
|
interior_ptr |
(CLR uniquement) points aux données d'un type référence. |
|
pin_ptr |
(CLR) points uniquement aux 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 conversion d'un type au moment de l'exécution. |
|
typeid |
(CLR uniquement) récupère un objet d' System.Type qui décrit le type ou l'objet donné. |
Déclarateurs
Le type suivant déclarateurs demandent au runtime pour gérer automatiquement la durée de vie et la suppression d'objets alloués.
Opérateur |
Objectif |
Référence |
---|---|---|
^ |
Déclare un handle vers un objet ; autrement dit, un pointeur vers Windows Runtime ou un objet CLR qui est automatiquement supprimé lorsqu'il n'est plus utilisable. |
Handle sur l'opérateur Object (^) (extensions du composant C++) |
% |
Déclare une référence de suivi ; autrement dit, une référence à Windows Runtime ou un objet CLR qui est automatiquement supprimé lorsqu'il n'est plus utilisable. |
Opérateur de référence de suivi (extensions du composant C++) |
Éléments et rubriques connexes supplémentaires
Cette section répertorie les éléments de programmation supplémentaires, et les rubriques qui concernent le 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 utilisés à la place des types intégraux C++. |
|
Modificateur d'appdomain__declspec |
Le modificateur d'__declspec qui mandat cette statiques et variables globales existent par appdomain. |
Décrit comment les casts de style C sont interprètes. |
|
Convention d'appel de__clrcall |
Indique la convention d'appel CLR conforme. |
__cplusplus_cli |
|
Décrit comment définir vos propres attributs CLR. |
|
Fournit une vue d'ensemble de la gestion des exceptions. |
|
Explique comment les fonctions membres peuvent substituer les membres arbitraires. |
|
Explique comment un assembly client peut accéder à tous les types un composant d'assembly. |
|
Explique les conditions dans lesquelles les types de valeurs sont enfermés dans une boîte. |
|
Prise en charge du compilateur pour les Type Traits (extensions du composant C++) |
Explique comment détecter les caractéristiques des types au moment de la compilation. |
Pragmas demanaged, unmanaged |
Explique comment les fonctions managées et non managées peuvent coexister dans le même package. |
Modificateur deprocess__declspec |
Le modificateur d'__declspec qui mandat cette statiques et variables globales existent par processus. |
Explique la version CLR les informations de type au moment de l'exécution. |
|
Décrit la conversion de compilateur des littéraux de chaîne à String. |
|
Active le déplacement d'un type dans un assembly d'expédition à un autre assembly afin que le code client n'ait pas être recompilé. |
|
Attributs définis par l'utilisateur (extensions du composant C++) |
Décrit les attributs définis par l'utilisateur. |
Tous les assemblys externes. |
|
Explique la documentation de code XML à l'aide de /doc (Traiter les commentaires de documentation) (C/C++) |