Share via


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.

Classes et structs (extensions du composant C++)

value class

value struct

Non

Déclare une classe de valeur.

Classes et structs (extensions du composant C++)

interface class

interface struct

Non

Déclare une interface.

classe d'interface (extensions du composant C++)

enum class

enum struct

Non

Déclare une énumération.

classe enum (extensions du composant C++)

property

Oui

Déclare une propriété.

propriété (extensions du composant C++)

delegate

Oui

Déclare un délégué.

déléguer (extensions du composant C++)

event

Oui

Déclare un événement.

événement (extensions du composant C++)

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.

abstract (extensions du composant C++)

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.

substituer (extensions du composant C++)

sealed

Oui

Empêché d'être utilisée comme classe de base.

sealed (extensions du composant C++)

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.

Gestion des exceptions (extensions du composant C++)

for each, in

Non

Énumère les éléments d'une collection.

pour chaque, dans

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, gcnew (extensions du composant C++)

ref new

Oui

Alloue un type d' Windows Runtime .Utilisez à la place d' new et d' delete.

ref new, gcnew (extensions du composant C++)

initonly

Oui

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

initonly

literal

Oui

Crée une variable littérale.

littéral (extensions du composant C++)

nullptr

Non

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

nullptr (extensions du composant C++)

É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.

Tableaux (extensions du composant C++)

interior_ptr

(CLR uniquement) points aux données d'un type référence.

interior_ptr (C++/CLI)

pin_ptr

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

pin_ptr (C++/CLI)

safe_cast

Détermine et exécute la méthode optimale de conversion d'un type au moment de l'exécution.

safe_cast (extensions du composant C++)

typeid

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

typeid (extensions du composant C++)

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

__identifier (C++/CLI)

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

Listes d'arguments de variable (...) (C++/CLI)

(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 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.

Casts de style C avec /clr (C++/CLI)

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

Macros prédéfinies

Attributs personnalisés (C++)

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

Gestion des exceptions (extensions du composant C++)

Fournit une vue d'ensemble de la gestion des exceptions.

Substitutions explicites (extensions du composant C++)

Explique comment les fonctions membres peuvent substituer les membres arbitraires.

Assemblys friend (C++)

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

Boxing (extensions du composant C++)

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.

Réflexion (C++/CLI)

Explique la version CLR les informations de type au moment de l'exécution.

Chaîne (extensions du composant C++)

Décrit la conversion de compilateur des littéraux de chaîne à String.

Transfert de type (C++/CLI)

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.

directive #using (C++)

Tous les assemblys externes.

Documentation XML (Visual C++)

Explique la documentation de code XML à l'aide de /doc (Traiter les commentaires de documentation) (C/C++)

Voir aussi

Autres ressources

programmation. NET dans Visual C++

Interopérabilité native et .NET