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.

Klassen und Strukturen (Komponentenerweiterungen für C++)

value class

value struct

Nein

Deklariert eine Wertklasse.

Klassen und Strukturen (Komponentenerweiterungen für C++)

interface class

interface struct

Nein

Deklariert eine Schnittstelle.

interface class (Komponentenerweiterungen für C++)

enum class

enum struct

Nein

Deklariert eine Enumeration.

enum class (Komponentenerweiterungen für C++)

property

Ja

Deklariert eine Eigenschaft.

property (Komponentenerweiterungen für C++)

delegate

Ja

Deklariert einen Delegaten.

delegate (Komponentenerweiterungen für C++)

event

Ja

Deklariert ein Ereignis.

event (Komponentenerweiterungen für C++)

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

abstract (Komponentenerweiterungen für C++)

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.

override (Komponentenerweiterungen für C++)

sealed

Ja

Verhindert Klassen an verwendet werden als Basisklassen.

sealed (Komponentenerweiterungen für C++)

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.

Ausnahmebehandlung (Komponentenerweiterungen für C++)

for each, in

Nein

Listet Elemente einer Auflistung.

For Each in

gcnew

Nein

Ordnet Typen auf dem Heap der Garbage Collection zu.Verwenden Sie anstelle new und delete.

ref new, gcnew (Komponentenerweiterungen für C++)

ref new

Ja

Ordnet einen Windows-Runtime-Typ zu.Verwenden Sie anstelle new und delete.

ref new, gcnew (Komponentenerweiterungen für C++)

initonly

Ja

Gibt an, dass ein Member in der Deklaration oder in einem statischen Konstruktor nur initialisiert werden kann.

initonly

literal

Ja

Erstellt eine literale Variable.

literal (Komponentenerweiterungen für C++)

nullptr

Nein

Gibt an, dass ein Handle oder ein Zeiger nicht für ein Objekt zeigt.

nullptr (Komponentenerweiterungen für C++)

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.

Arrays (Komponentenerweiterungen für C++)

interior_ptr

(Nur CLR) zeigt auf den Daten in einem Referenztyp.

interior_ptr (C++/CLI)

pin_ptr

(Nur CLR) Punkte zu bei als auch bei um CLR-Referenztypen, um den Garbage Collections-Systems vorübergehend zu unterdrücken.

pin_ptr (C++/CLI)

safe_cast

Bestimmt und führt die optimale Umwandlungsmethode für einen Laufzeittyp aus.

safe_cast (Komponentenerweiterungen für C++)

typeid

(Nur CLR) ruft ein System.Type-Objekt ab, das den angegebenen Typ oder das Objekt beschrieben wird.

typeid (Komponentenerweiterungen für C++)

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.

Handle für Objekt (^) (Komponentenerweiterungen für C++)

%

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

__identifier (C++/CLI)

Windows-Runtime (und CLR) ermöglicht die Verwendung von Schlüsselwörtern als Bezeichner.

Variable Argumentlisten (...) (C++/CLI)

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.

C-stilartige Umwandlungen mit /clr (C++/CLI)

Beschreibt, wie Umwandlungen im C-Format interpretiert werden.

__clrcall Aufrufkonvention

Gibt die CLR-kompatible Aufrufkonvention an.

__cplusplus_cli

Vordefinierte Makros

Benutzerdefinierte Attribute (C++)

Beschreibt, wie eigene CLR-Attribute definiert.

Ausnahmebehandlung (Komponentenerweiterungen für C++)

Stellt eine Übersicht der Ausnahmebehandlung.

Explizite Überschreibungen (Komponentenerweiterungen für C++)

Veranschaulicht, wie Memberfunktionen beliebige Member überschreiben können.

Friend-Assemblys (C++)

Erläutert, wie ein Client, der Assembly auf alle zugreifen kann, eine Assemblykomponente einzufügen.

Boxing (Komponentenerweiterungen für C++)

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.

Reflektion (C++/CLI)

Veranschaulicht die CLR-Version von Laufzeit-Typeninformation.

Zeichenfolge (Komponentenerweiterungen für C++)

Erläutert Compilerkonvertierung von Zeichenfolgenliteralen zu String.

Typweiterleitung (C++/CLI)

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.

#using Direktiven (C++)

Importiert externe Assemblys.

XML-Dokumentation (Visual C++)

Erläutert XML-basierte Codedokumentation mithilfe von /doc (Verarbeiten von Dokumentationskommentaren) (C/C++)

Siehe auch

Weitere Ressourcen

.NET, das Programmierung in Visual C++

Interoperabilität von systemeigenem Code und .NET