Kurzreferenz (C++/CX)

Die Windows-Runtime unterstützt Universelle Windows-Plattform(UWP)-Apps. Diese Apps werden nur in einer vertrauenswürdigen Betriebssystemumgebung ausgeführt, autorisierte Funktionen, Datentypen und Geräte verwendet und über den Microsoft Store verteilt. 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 erstellen, verwenden Sie die /ZW Compileroption, um eine UWP-App oder Windows-Runtime Komponente zu erstellen. Um auf Windows-Runtime Deklarationen zuzugreifen, die in den Windows-Runtime Metadatendateien (WINMD) definiert sind, geben Sie die #using Direktive oder die /FU Compileroption an. Wenn Sie ein Projekt für eine UWP-App erstellen, legt Visual Studio diese Optionen standardmäßig fest und fügt Verweise auf alle Windows-Runtime Bibliotheken hinzu.

Kurzreferenz

Konzept Standard-C++ C++/CX Hinweise
Grundlegende Typen Grundlegende C++-Typen Grundlegende C++/CX-Typen, die grundlegende Typen implementieren, die in der Windows-Runtime definiert sind. Der default Namespace enthält integrierte, grundlegende C++/CX-Typen. Der Compiler ordnet die grundlegenden C++/CX-Typen implizit den C++-Standardtypen zu.

Die Platform Namespacefamilie 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.
(Gilt nicht) Platform::Guid Ein nicht numerischer 128-Bit-Wert (eine GUID) im Platform -Namespace.
std::time_get Windows::Foundation::DateTime Eine Datum/Uhrzeit-Struktur.
(Gilt nicht) Windows::Foundation::TimeSpan Eine TimeSpan-Struktur.
(Gilt nicht) Platform::Object^ Das referenzierte 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 mithilfe des Handle-zu-Objekt-Modifizierers deklariert. Auf Member des Objekts wird mit dem Klassenmemberzugriffs-Operator Pfeil (->) zugegriffen.

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

T& identifier
Nachverfolgungsverweis (%):

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

Der Nachverfolgungsverweis bedeutet "ein Verweis auf ein Windows-Runtime-Objekt, das automatisch 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, der delete den Destruktor aufruft, aber selbst keinen Arbeitsspeicher freigibt.
Arraydeklaration T identifier[]

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

-Oder-

WriteOnlyArray<T^> identifier( size )
Deklariert ein eindimensionales, modifizierbares 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 standardmäßiger private Barrierefreiheit.

Deklariert eine Laufzeitklasse mit standardmäßiger public Barrierefreiheit.
Strukturdeklaration struct identifier {}

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

value struct identifier {}
Deklariert eine POD-Struktur mit standardmäßiger private Barrierefreiheit.

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

Deklariert eine POD-Struktur mit standardmäßiger public Barrierefreiheit.

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

interface struct identifier {}
Deklariert eine Schnittstelle mit standardmäßiger private Barrierefreiheit.

Deklariert eine Schnittstelle mit standardmäßiger public Barrierefreiheit.
Delegat std::function public delegate return-type delegate-type-identifier ([ Parameter ]); Deklariert ein Objekt, das wie ein Funktionsaufruf aufgerufen werden kann.
Ereignis (Gilt nicht) 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 Auflistung von Ereignishandlern (Delegaten) speichert, die aufgerufen werden, wenn ein Ereignis auftritt.

Erstellt einen Ereignishandler.

Fügt einen Ereignishandler hinzu.

Durch Hinzufügen eines Ereignishandlers 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 (Gilt nicht) 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 Vorlagen 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 Variablen von skalaren Typen und value Strukturen einen Wert von nullptr.

Siehe auch

C++-/CX-Sprachreferenz