Komponentenerweiterungen für Laufzeitplattformen
Visual C++ bietet Spracherweiterungen, die Ihnen helfen, für Ablaufplattformen zu programmieren.Mit Komponentenerweiterungen für Visual C++ (C++/CX) verwenden, können Sie Windows Store App und Komponenten programmieren, die in systemeigenen Code kompiliert.Obwohl Sie Windows Store App erstellen können, indem Sie direkt für die Windows-Runtime COM-Schnittstellen programmieren, indem Sie C++/CX verwenden, können Sie mit Konstruktoren, Ausnahmen und anderen modernen Programmierung Idiomen C++ arbeiten.Um C++-Code zu aktivieren, das in einer verwalteten Ausführungsumgebung auf der .NET-Plattform programmiert, können Sie C++/CLI verwenden.
Zwei Laufzeiten, ein Satz von Erweiterungen
C++/CX ist eine Teilmenge von C++/CLI.Für Erweiterungen, die zu C++/CX und zu C++/CLI gemeinsam sind, hängt die Semantik davon ab, ob Sie die CLR (Common Language Runtime) oder Windows-Runtime abzielen.Um die Anwendung zu kompilieren um auf Windows-Runtime ausgeführt werden, geben Sie die /ZW-Compileroption an.Um sie zu kompilieren um auf die CLR ausgeführt werden, geben Sie die /clr-Compileroption an.Diese Schalter werden automatisch festgelegt, wenn Sie Visual Studio verwenden, um ein Projekt zu erstellen.
Weitere Informationen dazu, wie Windows Store App in C++, finden Sie unter Roadmap for Windows Store apps using C++ erstellt.
C++/CLI erweitert den Standard ISO/ANSI C++ und wird unter dem Standard Ecma C++/CLI definiert.Weitere Informationen finden Sie unter .NET, das Programmierung in Visual C++.
Datentyp-Schlüsselworte
Die Sprachenerweiterungen schließen Aggregatsschlüsselwörter ein, die Schlüsselwörter sind, die aus zwei Token bestehen, getrennt durch Leerzeichen.Die Token könnte ein, das bedeuten, wenn sie einzeln verwendet werden, und eine andere Bedeutung, wenn sie zusammen verwendet werden.Beispielsweise ist das Wort "ref" ein normaler Bezeichner, und das Wort "Klasse" ist ein Schlüsselwort, das eine systemeigene Klasse deklariert.jedoch, wenn diese Wörter kombiniert werden, um ref class zu bilden, deklariert die resultierende ganze Schlüsselwort eine Entität, die als Laufzeitklasse bezeichnet.
Die Erweiterungen enthalten auch kontextbezogene Schlüsselwörter.Ein Schlüsselwort wird behandelt, wie kontextbezogen abhängig von der Art der Anweisung, die sie enthält, und der Platzierung in dieser Anweisung.Beispielsweise kann die Eigenschaft" token ein Bezeichner sein, oder sie kann eine spezielle öffentlicher Klassenmember deklarieren.
In der folgenden Tabelle werden Schlüsselwörter in der C++-Sprachenerweiterung auf.
Schlüsselwort |
Kontextbezogen |
Zweck |
Verweise |
---|---|---|---|
ref class ref struct |
Nein |
Deklariert eine Klasse. |
|
value class value struct |
Nein |
Deklariert eine Wertklasse. |
|
interface class interface struct |
Nein |
Deklariert eine Schnittstelle. |
|
enum class enum struct |
Nein |
Deklariert eine Enumeration. |
|
property |
Ja |
Deklariert eine Eigenschaft. |
|
delegate |
Ja |
Deklariert einen Delegaten. |
|
event |
Ja |
Deklariert ein Ereignis. |
Überschreibungs-Spezifizierer
Sie können die folgenden Schlüsselwörter verwenden, um Überschreibungsverhalten für Ableitung zu qualifizieren.Obwohl das - Schlüsselwort new keine Erweiterung von C++ ist, wird es hier aufgeführt, da es in einem zusätzlichen Kontext verwendet werden kann.Einige Bezeichner sind auch für systemeigene Programmierung gültig.Weitere Informationen finden Sie unter Gewusst wie: Deklarieren Sie Überschreibungs-Spezifizierer in systemeigenen Kompilierungen.
Schlüsselwort |
Kontextbezogen |
Zweck |
Verweise |
---|---|---|---|
abstract |
Ja |
Gibt an, dass Funktionen oder Klassen als abstrakt deklariert sind. |
|
new |
Nein |
Gibt an, dass eine Funktion keine Überschreibung einer Basisklassenversion ist. |
new (neuer Slot in vtable) (Komponentenerweiterungen für C++) |
override |
Ja |
Gibt an, dass eine Methode eine Überschreibung einer Basisklassenversion sein muss. |
|
sealed |
Ja |
Verhindert Klassen an verwendet werden als Basisklassen. |
Schlüsselwörter für Generika
Die folgenden Schlüsselwörter sind für die Unterstützung generischer Typen hinzugefügt.Weitere Informationen finden Sie unter Generika (Komponentenerweiterungen für C++).
Schlüsselwort |
Kontextbezogen |
Zweck |
---|---|---|
generic |
Nein |
Deklariert einen generischen Typ. |
where |
Ja |
Gibt die Einschränkungen an, die mit einem generischen Typparameter angewendet werden. |
Verschiedene Schlüsselwörter
Die folgenden Schlüsselwörter werden den C++-Erweiterungen hinzugefügt.
Schlüsselwort |
Kontextbezogen |
Zweck |
Verweise |
---|---|---|---|
finally |
Ja |
Gibt standardmäßige Ausnahmebehandlungsverhalten an. |
|
for each, in |
Nein |
Listet Elemente einer Auflistung. |
|
gcnew |
Nein |
Ordnet Typen auf dem Heap der Garbage Collection zu.Verwenden Sie anstelle new und delete. |
|
ref new |
Ja |
Ordnet einen Windows-Runtime-Typ zu.Verwenden Sie anstelle new und delete. |
|
initonly |
Ja |
Gibt an, dass ein Member in der Deklaration oder in einem statischen Konstruktor nur initialisiert werden kann. |
|
literal |
Ja |
Erstellt eine literale Variable. |
|
nullptr |
Nein |
Gibt an, dass ein Handle oder ein Zeiger nicht für ein Objekt zeigt. |
Vorlagen-Konstrukte
Die folgenden Sprachkonstrukte werden als Vorlagen, statt als Schlüsselwörter implementiert.Wenn Sie die /ZW-Compileroption angeben, werden diese lang im - Namespace definiert.Wenn Sie die /clr-Compileroption angeben, werden diese cli im - Namespace definiert.
Schlüsselwort |
Zweck |
Verweise |
---|---|---|
array |
Deklariert ein Array. |
|
interior_ptr |
(Nur CLR) zeigt auf den Daten in einem Referenztyp. |
|
pin_ptr |
(Nur CLR) Punkte zu bei als auch bei um CLR-Referenztypen, um den Garbage Collections-Systems vorübergehend zu unterdrücken. |
|
safe_cast |
Bestimmt und führt die optimale Umwandlungsmethode für einen Laufzeittyp aus. |
|
typeid |
(Nur CLR) ruft ein System.Type-Objekt ab, das den angegebenen Typ oder das Objekt beschrieben wird. |
Deklaratoren
Die folgenden Typdeklaratoren weisen die Laufzeit an, um die Lebensdauer und Löschen von zugeordneten Objekten automatisch zu verwalten.
Operator |
Zweck |
Verweise |
---|---|---|
^ |
Deklariert ein Handle für ein Objekt; das heißt, ein Zeiger auf Windows-Runtime oder einem CLR-Objekt, der automatisch gelöscht wird, wenn er nicht mehr verwendbar ist. |
|
% |
Deklariert einen Nachverfolgungsverweis; das heißt, ein Verweis auf Windows-Runtime oder einem CLR-Objekt, der automatisch gelöscht wird, wenn er nicht mehr verwendbar ist. |
Nachverfolgungsverweisoperator (Komponentenerweiterungen für C++) |
Zusätzliche Konstrukte und verwandte Themen
In diesem Abschnitt werden zusätzliche Programmierkonstrukte und Themen auf, die die CLR betreffen.
Thema |
Description |
---|---|
Windows-Runtime (und CLR) ermöglicht die Verwendung von Schlüsselwörtern als Bezeichner. |
|
Windows-Runtime (und CLR) ermöglicht eine Funktion, um eine variable Anzahl von Argumenten. |
|
.NET Framework-Entsprechungen der systemeigenen Typen in C++ (C++/CLI) |
Führt die CLR-Typen auf, die anstelle C++-ganzzahligerTypen verwendet werden. |
Modifizierer appdomain__declspec |
__declspec dieser Modifizierer festgelegt wird, dass statische und globale Variablen pro appdomain vorhanden sind. |
Beschreibt, wie Umwandlungen im C-Format interpretiert werden. |
|
__clrcall Aufrufkonvention |
Gibt die CLR-kompatible Aufrufkonvention an. |
__cplusplus_cli |
|
Beschreibt, wie eigene CLR-Attribute definiert. |
|
Stellt eine Übersicht der Ausnahmebehandlung. |
|
Explizite Überschreibungen (Komponentenerweiterungen für C++) |
Veranschaulicht, wie Memberfunktionen beliebige Member überschreiben können. |
Erläutert, wie ein Client, der Assembly auf alle zugreifen kann, eine Assemblykomponente einzufügen. |
|
Veranschaulicht die Bedingungen, unter denen Wertstypen geschachtelt werden. |
|
Compilerunterstützung für Typmerkmale (Komponentenerweiterungen für C++) |
Erläutert, wie Eigenschaften von Typen zur Kompilierzeit erkennt. |
verwaltet, nicht verwaltet Pragmas |
Veranschaulicht, wie verwaltete und nicht verwaltete Funktionen in demselben Modul vorhanden sein können. |
Modifizierer Prozess__declspec |
__declspec dieser Modifizierer festgelegt wird, dass statische und globale Variablen pro Prozess vorhanden sind. |
Veranschaulicht die CLR-Version von Laufzeit-Typeninformation. |
|
Erläutert Compilerkonvertierung von Zeichenfolgenliteralen zu String. |
|
Aktiviert die Bewegung eines Typs in einer Versandassembly zu einer anderen Assembly, sodass Clientcode nicht neu kompiliert werden muss. |
|
Benutzerdefinierte Attribute (Komponentenerweiterungen für C++) |
Veranschaulicht benutzerdefinierte Attribute. |
Importiert externe Assemblys. |
|
Erläutert XML-basierte Codedokumentation mithilfe von /doc (Verarbeiten von Dokumentationskommentaren) (C/C++) |