Kurzreferenz (C++/CX)

Die Windows-Runtime unterstützt UWP-Apps (Universelle Windows-Plattform). Diese Apps, die nur in einer vertrauenswürdigen Betriebssystemumgebung ausgeführt werden, außerdem autorisierte Funktionen, Datentypen und Geräte verwenden und über Microsoft Store verteilt werden. Der C++/CX vereinfacht das Schreiben von Apps für die Windows-Runtime. Dieser Artikel ist eine Kurzübersicht; eine ausführlichere Dokumentation finden Sie unter Typsystem.

Wenn Sie auf der Befehlszeile aufbauen, verwenden Sie die /ZW Compileroption, um eine UWP-App oder eine Komponente für Windows-Runtime zu erstellen. Um auf Windows-Runtime-Deklarationen zuzugreifen, die in den Windows-Runtime-Metadatendateien (WINMD) definiert sind, geben Sie die #using Anweisung oder die /FU Compileroption an. Wenn Sie ein Projekt für eine UWP-App erstellen, werden diese Optionen von Visual Studio standardmäßig festgelegt und Verweise zu allen Windows-Runtime-Bibliotheken hinzugefügt.

Kurzreferenz

Konzept Standard-C++ C++/CX Hinweise
Grundlegende Typen Grundlegende C++-Typen Grundlegende C++/CX-Typen, die die in Windows-Runtime definierten grundlegenden Typen implementieren. Der default-Namespace enthält integrierte grundlegende Typen. Vom Compiler werden die grundlegenden C++/CX Typen implizit zu Standard-C++-Typen zugeordnet.

Die Platform -Familie von Namespaces enthält Typen, die grundlegende Windows-Runtime-Typen implementieren.
bool bool Ein 8-Bit-boolescher Wert.
wchar_t, char16_t char16 Ein nicht numerischer 16-Bit-Wert, der einen Unicode-Codepunkt (UTF-16) darstellt.
short

unsigned short
int16

uint16
Eine 16-Bit-Ganzzahl mit Vorzeichen.

Eine 16-Bit-Ganzzahl ohne Vorzeichen.
int

unsigned int
int

uint32
Eine 32-Bit-Ganzzahl mit Vorzeichen.

Eine 32-Bit-Ganzzahl ohne Vorzeichen.
long long - oder - __int64

unsigned long long
int64

uint64
Eine 64-Bit-Ganzzahl mit Vorzeichen.

Eine 64-Bit-Ganzzahl ohne Vorzeichen.
float, double float32, float64 Eine 32-Bit- oder 64-Bit-IEEE 754-Gleitkommazahl.
enum enum class

Oder

enum struct
Eine 32-Bit-Enumeration.
(Nicht anwendbar) Platform::Guid Ein nicht numerischer 128-Bit-Wert (eine GUID) im Platform -Namespace.
std::time_get Windows::Foundation::DateTime Eine Datum/Uhrzeit-Struktur.
(Nicht anwendbar) Windows::Foundation::TimeSpan Eine TimeSpan-Struktur.
(Nicht anwendbar) Platform::Object^ Das nach Verweis gezählte Basisobjekt in der C++-Ansicht des Windows-Runtime-Typsystems.
std::wstring

L"..."
Platform::String^ Platform::String^ ist eine nach Verweis gezählte, unveränderliche Sequenz von Unicode-Zeichen, die Text darstellt.
Zeiger Zeiger auf Objekt (*):

std::shared_ptr
Handle-to-object (^, steht für Caretzeichen):

T^ identifier
Alle Windows-Runtime-Klassen werden mit dem handle-to-object-Modifizierer deklariert. Auf Member des Objekts wird mit dem Klassenmemberzugriffs-Operator Pfeil (->) zugegriffen.

Der Caretzeichenmodifizierer bedeutet "Zeiger auf ein Windows-Runtime -Objekt, das automatisch nach Verweis gezählt wird." Genauer gesagt, deklariert "handle-to-object", dass der Compiler Code einfügen soll, um den Verweiszählerwert des Objekts zu automatisch verwalten und das Objekt zu löschen, wenn der Verweiszähler Null ist
Verweis Ein Verweis auf ein Objekt (&):

T& identifier
Nachverfolgungsverweis (%):

T% identifier
Es können nur Windows-Runtime-Typen mit dem Nachverfolgungsverweismodifizierer deklariert werden. Auf Member des Objekts wird mit dem Klassenmemberzugriffs-Operator Punkt (.) zugegriffen.

Der Nachverfolgungsverweis bedeutet "einen Verweis auf ein Windows-Runtime-Objekt, das automatisch nach Verweis gezählt wird." Genauer gesagt deklariert ein Nachverfolgungsverweis, dass der Compiler Code einfügen soll, um die Referenzanzahl des Objekts automatisch zu verwalten. Der Code löscht das Objekt, wenn die Bezugsanzahl auf Null gesetzt wird.
Dynamische Typdeklaration new ref new Weist ein Windows-Runtime-Objekt zu und gibt dann ein Handle für dieses Objekt zurück.
Verwaltung der Objektlebensdauer delete identifier

delete[] identifier
(Destruktoraufruf.) Die Lebensdauer wird durch Verweiszählung bestimmt. Ein Aufruf an delete ruft den Destruktor auf, aber gibt selbst keinen Arbeitsspeicher frei.
Arraydeklaration T identifier[]

std::array identifier
Array<T^>^ identifier( size )

Oder

WriteOnlyArray<T^> identifier( size )
Deklariert ein eindimensionales bearbeitbares oder schreibgeschütztes Array vom Typ T^. Das Array selbst ist auch ein nach Verweis gezähltes Objekt, das mit dem handle-to-object-Modifizierer deklariert werden muss.

(Arraydeklarationen verwenden eine Vorlagenheaderklasse, die im Platform -Namespace ist.)
Klassendeklaration class identifier {}

struct identifier {}
ref class identifier {}

ref struct identifier {}
Deklariert eine Laufzeitklasse mit private Standardbarrierefreiheit.

Deklariert eine Laufzeitklasse mit public Standardbarrierefreiheit.
Strukturdeklaration struct identifier {}

(d. h. eine POD-Struktur (Plain Old Data))
value class identifier {}

value struct identifier {}
Deklariert eine POD-Struktur mit private Standardbarrierefreiheit.

Eine value class kann in Windows-Metadaten dargestellt werden, aber ein Standard-C++ class nicht.

Deklariert eine POD-Struktur mit public Standardbarrierefreiheit.

Eine value struct kann in Windows-Metadaten dargestellt werden, aber ein Standard-C++ struct nicht.
Schnittstellendeklaration Abstrakte Klasse, die nur rein virtuelle Funktionen enthält. interface class identifier {}

interface struct identifier {}
Deklariert eine Schnittstelle mit private Standardbarrierefreiheit.

Deklariert eine Schnittstelle mit public Standardbarrierefreiheit.
Delegieren std::function public delegate return-type delegate-type-identifier ( [ Parameter ] ); Deklariert ein Objekt, das wie ein Funktionsaufruf aufgerufen werden kann.
Ereignis (Nicht anwendbar) event delegate-type-identifier event-identifier;

delegate-type-identifier delegate-identifier = ref new delegate-type-identifier( this [, Parameter] );

event-identifier += *delegate-identifier;

Oder

EventRegistrationToken token-identifier = object.event-identifier += delegate-identifier;

Oder

auto token-identifier = object.event-identifier::add( delegate-identifier );

object.event-identifier -= token-identifier;

Oder

object.event-identifier::remove( token-identifier );
Deklariert ein event-Objekt, das eine Ereignishandlerauflistung (Delegaten) speichert, die beim Auftreten eines Ereignisses aufgerufen wird.

Erstellt einen Ereignishandler.

Fügt einen Ereignishandler hinzu.

Wenn ein Ereignishandler hinzugefügt wird, wird ein Ereignistoken (token-identifier) zurückgegeben. Falls Sie den Ereignishandler explizit entfernen möchten, müssen Sie das Ereignistoken für die spätere Verwendung speichern.

Entfernt einen Ereignishandler.

Um einen Ereignishandler zu entfernen, müssen Sie das Ereignistoken angeben, das Sie beim Hinzufügen des Ereignishandlers gespeichert haben.
Eigenschaft (Nicht anwendbar) property T identifier;

property T identifier[ index ];

property T default[ index ];
Deklariert, dass auf eine Klassen- oder eine Objektmemberfunktion mit derselben Syntax zugegriffen wird, die für den Zugriff auf einen Datenmember oder ein indiziertes Arrayelement verwendet wurde.

Deklariert eine Eigenschaft in einer Klassen- oder Objektmemberfunktion.

Deklariert eine indizierte Eigenschaft in einer Objektmemberfunktion.

Deklariert eine indizierte Eigenschaft in einer Klassenmemberfunktion.
Parametrisierte Typen templates generic <typename T> interface class identifier {}

generic <typename T > delegate [return-type] delegate-identifier() {}
Deklariert eine parametrisierte Schnittstellenklasse.

Deklariert einen parametrisierten Delegaten.
Auf NULL festlegbare Werttypen std::optional<T> Platform::IBox <T> Ermöglicht, dass Variablen von skalaren Typen und value-Strukturen einen Wert von nullptr aufweisen.

Weitere Informationen

C++-/CX-Sprachreferenz