Share via


Mots clés de langage

Plusieurs mots clés de langage ont été modifiés entre Extensions managées pour C++ et Visual C++ 2010.

Dans la nouvelle syntaxe Visual C++ 2010, le trait de soulignement double est supprimé comme préfixe de tous les mots clés (avec une exception : __identifier est conservé). Par exemple, une propriété se déclare à présent sous la forme property, et non __property.

Il y avait deux raisons majeures pour utiliser le préfixe de trait de soulignement double en Extensions managées :

  • Il s'agit de la méthode conforme servant à fournir des extensions locales sous la norme ISO-C++. Un des objectifs essentiels de la conception d'Extensions managées était ne pas introduire d'incompatibilités avec le langage standard, tel que de nouveaux mots clés ou jetons. C'est en grande partie cette raison qui motivait le choix d'une syntaxe de pointeur pour déclarer des objets de types référence managés.

  • Le trait de soulignement double, en dehors de sa dimension conforme, offre par ailleurs une garantie raisonnable de non-invasion de la base de code existante des utilisateurs du langage. C'était là le deuxième grand objectif de la conception d'Extensions managées.

En dépit de la suppression des traits de soulignement doubles, Microsoft maintient son engagement de conformité. Cependant, la prise en charge du modèle d'objet dynamique du CLR représente un paradigme de programmation à la fois novateur et puissant. La prise en charge de ce nouveau paradigme requiert ses propres jetons et mots clés de haut niveau. Nous avons cherché à exprimer ce nouveau paradigme avec un maximum d'efficacité tout en l'intégrant et en prenant en charge le langage standard. La nouvelle conception de la syntaxe représente un véritable progrès en matière de programmation de ces deux modèles d'objets disparates.

De même, nous avons à cœur de préserver la nature non invasive de ces nouveaux mots clés du langage. Nous y sommes parvenus grâce à l'utilisation de mots clés contextuels et espacés. Avant de nous pencher sur la nouvelle syntaxe du langage elle-même, essayons de comprendre le sens de ces deux versions très particulières des mots clés.

Un mot clé contextuel a une signification spéciale dans des contextes de programme spécifiques. Dans le programme général, par exemple, sealed est traité comme un identificateur ordinaire. Toutefois, lorsqu'il survient dans la partie déclarative d'un type de classe de référence managé, il est traité comme un mot clé dans le contexte de cette déclaration de classe. Cela réduit l'impact potentiellement invasif de l'introduction d'un nouveau mot clé dans le langage, ce qui nous semblait très important vis-à-vis des utilisateurs possédant déjà une base de code. En même temps, cela permet aux utilisateurs des nouvelles fonctionnalités de tirer le meilleur bénéfice de cette fonctionnalité de langage supplémentaire – ce qui n'était pas possible avec les Extensions managées. Pour obtenir un exemple de la façon dont sealed est utilisé, consultez Déclaration d'un type de classe managée.

Un mot clé espacé, tel que value class, est un cas particulier de mot clé contextuel. Il apparie un mot clé existant et un modificateur contextuel, séparés par un espace. La paire est traitée en tant qu'unité, plutôt que comme deux mots clés séparés.

Voir aussi

Concepts

Initiation à la migration de C++/CLI

Language Features for Targeting the CLR