适用于运行时平台的组件扩展
Visual C++提供语言扩展帮助您程序运行时平台。使用 Visual C++ 组件扩展 (C++/CX),可以程序编译为本机代码的 Windows 应用商店 app 和元素。使用 C++/CX,虽然可以通过编程创建 Windows 应用商店 app 直接 Windows 运行时 COM 接口,但,可以具有构造函数、异常和编程惯例的其他现代 C++一起使用。若要启用编程在.NET 平台的托管执行环境的 C++中,可以使用 C++/CLI。
两个运行时,一组扩展
C++/CX 是 C++/CLI 的子集。向 C++/CX 和 C++/CLI共有的扩展,语义取决于是否面向公共语言运行时(CLR)或 Windows 运行时。若要编译您的应用程序运行在 Windows 运行时,请指定 /ZW 编译器选项。若要编译它会在 CLR,请指定 /clr 编译器选项。当使用 Visual Studio 创建项目时,这些开关会自动设置。
有关如何创建 Windows 应用商店 app 的更多信息在 C++中,请参见 Roadmap for Windows Store apps using C++。
C++/CLI 扩展 ISO/ANSI C++标准和定义基于 Ecma C++/CLI 条件。有关更多信息,请参见编程在Visual C++的.NET。
数据类型关键字
语言扩展(包括组合 关键字,是关键字包括空格分隔的两个标记。标记可能具有意味着时要使用的单独使用其和其他含义,在一起时使用它们。例如,单词“ref”是普通标识符,因此,单词“选件类”是声明本机选件类的关键字。但是,当这些字组合形成 ref class时,得到的复合关键字声明称为的 运行时选件类的实体。
扩展还包括 区分上下文的 关键字。关键字视为区分上下文的基于包含它的该语句及其在该语句的位置。例如,该标记“属性”既可以是标识符,也可以声明特定公共选件类成员。
下表列出了 C++语言扩展的关键字。
关键字 |
上下文相关 |
用途 |
引用 |
---|---|---|---|
ref class ref struct |
否 |
声明选件类。 |
|
value class value struct |
否 |
声明值选件类。 |
|
interface class interface struct |
否 |
声明接口。 |
|
enum class enum struct |
否 |
声明枚举。 |
|
property |
是 |
声明属性。 |
|
delegate |
是 |
声明委托。 |
|
event |
是 |
声明事件。 |
重写说明符
可以使用下列关键字在派生限定重写行为。虽然 new 关键字不是 C++扩展,则此处列出,因为可用于附加上下文。某些说明符用于本机编程也是有效的。有关更多信息,请参见如何:声明在本机生成的重写说明符。
关键字 |
上下文相关 |
用途 |
引用 |
---|---|---|---|
abstract |
是 |
指示函数或选件类是抽象的。 |
|
new |
否 |
指示函数不是基类版本的重写。 |
|
override |
是 |
指示方法必须是一个基类版本的重写。 |
|
sealed |
是 |
防止选件类用作基类。 |
普通关键字
下面的关键字添加支持泛型类型。有关更多信息,请参见泛型(C++ 组件扩展)。
关键字 |
上下文相关 |
用途 |
---|---|---|
generic |
否 |
声明一个泛型类型。 |
where |
是 |
指定应用于泛型类型参数的约束。 |
混合关键字
以下关键字添加到 C++扩展。
关键字 |
上下文相关 |
用途 |
引用 |
---|---|---|---|
finally |
是 |
指示默认的异常 handlings 行为。 |
|
for each, in |
否 |
枚举集合的元素。 |
|
gcnew |
否 |
分配在垃圾回收堆的类型。而不是 new 和 delete的使用。 |
|
ref new |
是 |
将一个 Windows 运行时 类型。而不是 new 和 delete的使用。 |
|
initonly |
是 |
指示成员只能初始化声明或在静态构造函数。 |
|
literal |
是 |
创建一个文本变量。 |
|
nullptr |
否 |
指示句柄或指针不点在对象。 |
模板构造
下面的语言构造实现为模板,而不是关键字。如果指定 /ZW 编译器选项,它们在 lang 命名空间中定义。如果指定 /clr 编译器选项,它们在 cli 命名空间中定义。
关键字 |
用途 |
引用 |
---|---|---|
array |
声明数组。 |
|
interior_ptr |
(仅 CLR)指向在引用类型的数据。 |
|
pin_ptr |
(仅 CLR)指向 CLR 引用类型暂时禁止垃圾回收系统。 |
|
safe_cast |
确定并执行一个运行时类型的最佳强制转换方法。 |
|
typeid |
(仅 CLR)来检索描述特定类型或对象的 System.Type 对象。 |
声明符
以下类型声明指示运行时自动管理分配的对象的生存期和删除。
运算符 |
用途 |
引用 |
---|---|---|
^ |
声明句柄对象;即会自动删除的 Windows 运行时 或 CLR 对象的指针,当不再可用。 |
|
% |
声明跟踪引用;即会自动删除的 Windows 运行时 或 CLR 对象的引用,当不再可用。 |
其他构造和相关主题
本节列出了不同的编程与 CLR 构造和主题。
主题 |
描述 |
---|---|
(Windows 运行时 和 CLR)启用关键字用作标识符。 |
|
(Windows 运行时 和 CLR)使函数采用参数数目可变。 |
|
列出在 C++整型类型位置的 CLR 类型。 |
|
appdomain__declspec 修饰符 |
该__declspec 修饰符对静态和全局变量 per-appdomain 存在。 |
描述 C 样式转换如何解释。 |
|
调用约定__clrcall |
指示 CLR 兼容的调用约定。 |
__cplusplus_cli |
|
描述如何定义自己的 CLR 属性。 |
|
提供异常处理的概述。 |
|
演示成员函数如何重写任意成员。 |
|
讨论程序集都可访问的客户端如何输入程序集元素。 |
|
演示值类型进行装箱的条件。 |
|
讨论如何检测类型的属性在编译时。 |
|
演示托管和非托管功能如何在同一个模块可以共存。 |
|
process__declspec 修饰符 |
该__declspec 修饰符对静态和全局变量存在每个处理。 |
演示运行时类型信息的 CLR 版本。 |
|
讨论字符串编译器强制转换为 String。 |
|
启用一个类型的移动中提供程序集中于另一个程序集,以便客户端代码不必重新编译。 |
|
演示用户定义的特性。 |
|
导入外部程序集。 |
|
使用 /doc(处理文档注释)(C/C++),以适应 XML 基于代码文档 |