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