快速參考 (C++/CX)
Windows 執行階段支援通用 Windows 平台 (UWP) 應用程式。 應用程式只在可靠的作業系統環境中執行,使用授權的函式、資料類型及裝置,並且透過 Microsoft Store 散發。 C++/CX 可簡化 Windows 執行階段的應用程式撰寫。 本文是快速參考;如需更完整的文件,請參閱類型系統。
當您在命令列上建置時,請使用 /ZW
編譯器選項來建置 UWP 應用程式或 Windows 執行階段元件。 若要存取定義於 Windows 執行階段中繼資料 (.winmd) 檔案中的 Windows 執行階段宣告,請指定 #using
指示詞或 /FU
編譯器選項。 當您建立 UWP 應用程式的專案時,Visual Studio 預設會設定這些選項,並新增所有 Windows 執行階段程式庫的參考。
快速參考
概念 | 標準 C++ | C++/CX | 備註 |
---|---|---|---|
基本類型 | C++ 基本型別。 | C++/CX 基本類型,實作 Windows 執行階段中定義的基本類型。 | default 命名空間包含 C++/CX 內建的基本類型。 編譯器隱含地將 C++/CX 基本類型對應至 Standard C++ 類型。Platform 命名空間系列包含的類型實作基本 Windows 執行階段類型。 |
bool |
bool |
8 位元布林值。 | |
wchar_t 、char16_t |
char16 |
表示 Unicode (UTF-16) 字碼指標的 16 位元非數值。 | |
short unsigned short |
int16 uint16 |
16 位元帶正負號的整數。 16 位元不帶正負號的整數。 |
|
int unsigned int |
int uint32 |
32 位元帶正負號的整數。 32 位元不帶正負號的整數。 |
|
long long -或- __int64 unsigned long long |
int64 uint64 |
64 位元帶正負號的整數。 64 位元不帶正負號的整數。 |
|
float 、double |
float32 、float64 |
32 位元或 64 位元 IEEE 754 浮點數。 | |
enum |
enum class -或- enum struct |
32 位元列舉。 | |
(不會套用) | Platform::Guid |
Platform 命名空間中的 128 位元非數值 (GUID)。 |
|
std::time_get |
Windows::Foundation::DateTime |
日期時間結構。 | |
(不會套用) | Windows::Foundation::TimeSpan |
時間範圍結構。 | |
(不會套用) | Platform::Object^ |
Windows 執行階段類型系統之 C++ 檢視中,參考計數的基本物件。 | |
std::wstring L"..." |
Platform::String^ |
Platform::String^ 是 Unicode 字元之參考計數且不可變的序列,可代表文字。 |
|
Pointer | 物件指標 (* ):std::shared_ptr |
物件的控制代碼 (^ ,唸成 "hat"):T^ identifier |
所有 Windows 執行階段類別會使用物件的控制代碼修飾元來宣告。 物件的成員使用箭頭 (-> ) 類別成員存取運算子來存取。Hat 修飾元表示「指向會自動計算參考的 Windows 執行階段物件」。更明確地說,物件的控制代碼宣告編譯器應該插入程式碼,以自動管理物件的參考計數,而如果參考計數變成零,則刪除物件 |
參考 | 物件的參考 (& ):T& identifier |
追蹤參考 (% ):T% identifier |
只有 Windows 執行階段類型才能使用追蹤參考修飾元來宣告。 物件的成員使用點 (. ) 類別成員存取運算子來存取。追蹤參考表示「參考會自動計算參考的 Windows 執行階段物件」。更精確地說,追蹤參考會宣告編譯器應該插入程式碼,以自動管理物件的參考計數。 如果參考計數為零,程式碼就會刪除物件。 |
動態類型宣告 | new |
ref new |
配置 Windows 執行階段物件,然後傳回該物件的控制代碼。 |
物件存留期管理 | delete identifier delete[] identifier |
(叫用解構函式。) | 留存期是由參考計數決定。 對 delete 的呼叫會叫用解構函式,但本身不會釋放記憶體。 |
陣列宣告 | T identifier[] std::array identifier |
Array<T^>^ identifier( size ) -或- WriteOnlyArray<T^> identifier( size ) |
宣告型別 T^ 的一維可修改的或唯讀陣列。 陣列本身也是參考計數物件,必須使用物件的控制代碼修飾詞來宣告。(陣列宣告使用 Platform 命名空間中的樣板標頭類別。) |
類別宣告 | class identifier {} struct identifier {} |
ref class identifier {} ref struct identifier {} |
宣告具有預設 private 存取範圍的執行階段類別。宣告具有預設 public 存取範圍的執行階段類別。 |
結構宣告 | struct identifier {} (亦即,一般舊資料結構 (POD)) |
value class identifier {} value struct identifier {} |
宣告具有預設 private 存取範圍的 POD 結構。value class 可以在 Windows 中繼資料中表示,但 Standard C++ class 不能。宣告具有預設 public 存取範圍的 POD 結構。value struct 可以在 Windows 中繼資料中表示,但 Standard C++ struct 不能。 |
介面宣告 | 只包含純虛擬函式的抽象類別。 | interface class identifier {} interface struct identifier {} |
宣告具有預設 private 存取範圍的介面。宣告具有預設 public 存取範圍的介面。 |
Delegate | std::function |
public delegate return-type delegate-type-identifier ( [ 參數 ] ); |
宣告可以像函式呼叫一樣叫用的物件。 |
活動 | (不會套用) | event delegate-type-identifier event-identifier; delegate-type-identifier delegate-identifier = ref new delegate-type-identifier( this [, 參數] ); event-identifier += *delegate-identifier; -或- EventRegistrationToken token-identifier = object.event-identifier += delegate-identifier; -或- auto token-identifier = object.event-identifier::add( delegate-identifier ); object.event-identifier -= token-identifier; -或- object.event-identifier::remove( token-identifier ); |
宣告 event 物件,此物件會儲存事件發生時所呼叫的事件處理常式 (委派) 集合。建立事件處理常式。 加入事件處理常式。 加入事件處理常式會傳回事件語彙基元 ( token-identifier )。 如果您想要明確移除事件處理常式,您必須儲存事件語彙基元供以後使用。移除事件處理常式。 若要移除事件處理常式,您必須指定您在加入事件處理常式時所儲存的事件語彙基元。 |
屬性 | (不會套用) | property T identifier; property T identifier[ index ]; property T default[ index ]; |
宣告存取類別或物件成員函式所使用的語法,與存取資料成員或索引陣列元素所使用的語法相同。 宣告類別或物件成員函式的屬性。 宣告物件成員函式的索引屬性。 宣告類別成員函式的索引屬性。 |
參數化型別 | templates | generic <typename T> interface class identifier {} generic <typename T > delegate [return-type ] delegate-identifier() {} |
宣告參數化介面類別。 宣告參數化委派。 |
可為 Null 的實值型別 | std::optional<T> |
Platform::IBox <T> |
讓具有純量類型和 value 結構的變數能有 nullptr 這個值。 |