快速參考 (C++/CX)

Windows 執行階段支援 通用 Windows 平臺 (UWP) 應用程式。 這些應用程式只會在值得信任的作業系統環境中執行、使用授權的函式、資料類型和裝置,並透過 Microsoft Store 散發。 C++/CX 可簡化Windows 執行階段應用程式的撰寫。 本文是快速參考;如需更完整的檔,請參閱 類型系統

當您在命令列上建置時,請使用 /ZW 編譯器選項來建置 UWP 應用程式或Windows 執行階段元件。 若要存取Windows 執行階段宣告,這些宣告定義于Windows 執行階段中繼資料 (.winmd) 檔案中,請指定 #using 指示詞或 /FU 編譯器選項。 當您建立 UWP app 的專案時,Visual Studio 預設會設定這些選項,並將參考新增至所有Windows 執行階段程式庫。

快速參考

概念 標準 C++ C++/CX 備註
基本類型 C++ 基本型別。 C++/CX 基本類型,可實作Windows 執行階段中定義的基本類型。 命名空間 default 包含 C++/CX 內建的基本類型。 編譯器會隱含地將 C++/CX 基本類型對應至標準 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 中繼資料中表示 ,但標準 C++ class 不能。

宣告具有預設 public 協助工具的 POD 結構。

value struct可以在 Windows 中繼資料中表示 ,但標準 C++ struct 不能。
介面宣告 只包含純虛擬函式的抽象類別。 interface class identifier {}

interface struct identifier {}
宣告具有預設 private 協助工具的介面。

宣告具有預設 public 協助工具的介面。
委派 std::function public delegate return-type delegate-type-identifier ([ parameters ]); 宣告可以像函式呼叫一樣叫用的物件。
Event (不適用) event delegate-type-identifier event-identifier;

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

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宣告 物件,這個物件會儲存事件發生時所呼叫之事件處理常式 (delegates) 的集合。

建立事件處理常式。

加入事件處理常式。

新增事件處理常式會傳回事件權杖 ( 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

另請參閱

C++/CX 語言參考