快速参考 (C++/CX)

Windows 运行时支持通用 Windows 平台 (UWP) 应用程序。 这些应用程序只在可信操作系统环境中执行,使用授权的功能、数据类型和设备,并通过 Microsoft Store 分发。 C++/CX 简化了 Windows 运行时应用程序的编写。 本文仅作为快速参考;有关更完整的文档,请参阅类型系统

在命令行上生成时,请使用 /ZW 编译器选项生成 UWP 应用程序或 Windows 运行时组件。 若要访问 Windows 运行时声明(这些声明是在 Windows 运行时元数据 (.winmd) 文件中定义的),请指定 #using 指令或 /FU 编译器选项。 创建 UWP 应用程序项目时,默认情况下,Visual Studio 会设置这些选项并添加对所有 Windows 运行时库的引用。

快速参考

概念 标准 C++ C++/CX 备注
基本类型 C++ 基础类型。 实现 Windows 运行时中定义的基础类型的 C++/CX 基础类型。 default 命名空间包含 C++/CX 内置基础类型。 编译器将 C++/CX 基础类型隐式映射到标准 C++ 类型。

命名空间的 Platform 系列包含实现基础 Windows 运行时类型的类型。
bool bool 8 位布尔值。
wchar_tchar16_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 位无符号整数。
floatdouble float32float64 32 位或 64 位 IEEE 754 浮点数。
enum enum class

- 或者 -

enum struct
32 位枚举。
(不适用) Platform::Guid Platform 命名空间中的 128 位非数字值 (GUID)。
std::time_get Windows::Foundation::DateTime 日期-时间结构。
(不适用) Windows::Foundation::TimeSpan timespan 结构。
(不适用) Platform::Object^ Windows 运行时类型系统的 C++ 视图中引用计数的基对象。
std::wstring

L"..."
Platform::String^ Platform::String^ 是用来表示文本的 Unicode 字符的引用计数不可变序列。
指针 指向对象的指针 (*):

std::shared_ptr
句柄到对象 (^,发音为“hat”):

T^ identifier
所有 Windows 运行时类都通过使用句柄到对象修饰符进行声明。 使用箭头 (->) 类成员访问运算符访问对象的成员。

乘幂号修饰符表示“指向自动引用计数的 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 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 对象,它存储在事件发生时被调用的事件处理程序(委托)的集合。

创建事件处理程序。

添加事件处理程序。

添加事件处理程序会返回事件标记 (token-identifier)。 如果要显式移除事件处理程序,则必须保存事件标记供以后使用。

移除事件处理程序。

若要移除事件处理程序,必须指定在添加事件处理程序时保存的事件标记。
properties (不适用) property T identifier;

property T identifier[ index ];

property T default[ index ];
声明类或对象成员函数可通过用于访问数据成员或索引数组元素的同一语法来访问。

在类或对象成员函数上声明属性。

在对象成员函数上声明索引属性。

在类成员函数上声明索引属性。
参数化类型 模板 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 语言参考