适用于运行时平台的组件扩展

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

声明选件类。

类和结构(C++ 组件扩展)

value class

value struct

声明值选件类。

类和结构(C++ 组件扩展)

interface class

interface struct

声明接口。

接口类(C++ 组件扩展)

enum class

enum struct

声明枚举。

enum 类(C++ 组件扩展)

property

声明属性。

属性(C++ 组件扩展)

delegate

声明委托。

委托(C++ 组件扩展)

event

声明事件。

event(C++ 组件扩展)

重写说明符

可以使用下列关键字在派生限定重写行为。 虽然 new 关键字不是 C++扩展,则此处列出,因为可用于附加上下文。 某些说明符用于本机编程也是有效的。 有关更多信息,请参见如何:声明在本机生成的重写说明符

关键字

上下文相关

用途

引用

abstract

指示函数或选件类是抽象的。

abstract(C++ 组件扩展)

new

指示函数不是基类版本的重写。

new(vtable 中的新槽)(C++ 组件扩展)

override

指示方法必须是一个基类版本的重写。

重写(C++ 组件扩展)

sealed

防止选件类用作基类。

sealed(C++ 组件扩展)

普通关键字

下面的关键字添加支持泛型类型。 有关更多信息,请参见泛型(C++ 组件扩展)

关键字

上下文相关

用途

generic

声明一个泛型类型。

where

指定应用于泛型类型参数的约束。

混合关键字

以下关键字添加到 C++扩展。

关键字

上下文相关

用途

引用

finally

指示默认的异常 handlings 行为。

异常处理(C++ 组件扩展)

for each, in

枚举集合的元素。

对于每个,

gcnew

分配在垃圾回收堆的类型。 而不是 newdelete的使用。

ref new、gcnew(C++ 组件扩展)

ref new

将一个 Windows 运行时 类型。 而不是 newdelete的使用。

ref new、gcnew(C++ 组件扩展)

initonly

指示成员只能初始化声明或在静态构造函数。

initonly

literal

创建一个文本变量。

文本(C++ 组件扩展)

nullptr

指示句柄或指针不点在对象。

nullptr(C++ 组件扩展)

模板构造

下面的语言构造实现为模板,而不是关键字。 如果指定 /ZW 编译器选项,它们在 lang 命名空间中定义。 如果指定 /clr 编译器选项,它们在 cli 命名空间中定义。

关键字

用途

引用

array

声明数组。

数组(C++ 组件扩展)

interior_ptr

(仅 CLR)指向在引用类型的数据。

interior_ptr (C++/CLI)

pin_ptr

(仅 CLR)指向 CLR 引用类型暂时禁止垃圾回收系统。

pin_ptr (C++/CLI)

safe_cast

确定并执行一个运行时类型的最佳强制转换方法。

safe_cast(C++ 组件扩展)

typeid

(仅 CLR)来检索描述特定类型或对象的 System.Type 对象。

typeid(C++ 组件扩展)

声明符

以下类型声明指示运行时自动管理分配的对象的生存期和删除。

运算符

用途

引用

^

声明句柄对象;即会自动删除的 Windows 运行时 或 CLR 对象的指针,当不再可用。

对象句柄运算符 (^)(C++ 组件扩展)

%

声明跟踪引用;即会自动删除的 Windows 运行时 或 CLR 对象的引用,当不再可用。

跟踪引用运算符(C++ 组件扩展)

其他构造和相关主题

本节列出了不同的编程与 CLR 构造和主题。

主题

描述

__identifier (C++/CLI)

(Windows 运行时 和 CLR)启用关键字用作标识符。

变量参数列表 (...) (C++/CLI)

(Windows 运行时 和 CLR)使函数采用参数数目可变。

对应于 C++ 本机类型的 .NET Framework 类型 (C++/CLI)

列出在 C++整型类型位置的 CLR 类型。

appdomain__declspec 修饰符

该__declspec 修饰符对静态和全局变量 per-appdomain 存在。

C 风格的强制转换和 /clr (C++/CLI)

描述 C 样式转换如何解释。

调用约定__clrcall

指示 CLR 兼容的调用约定。

__cplusplus_cli

预定义的宏

自定义特性(C++)

描述如何定义自己的 CLR 属性。

异常处理(C++ 组件扩展)

提供异常处理的概述。

显式重写(C++ 组件扩展)

演示成员函数如何重写任意成员。

友元程序集 (C++)

讨论程序集都可访问的客户端如何输入程序集元素。

装箱(C++ 组件扩展)

演示值类型进行装箱的条件。

编译器支持类型特征(C++ 组件扩展)

讨论如何检测类型的属性在编译时。

managed, unmanaged 说明

演示托管和非托管功能如何在同一个模块可以共存。

process__declspec 修饰符

该__declspec 修饰符对静态和全局变量存在每个处理。

反射 (C++/CLI)

演示运行时类型信息的 CLR 版本。

String(C++ 组件扩展)

讨论字符串编译器强制转换为 String

类型转发 (C++/CLI)

启用一个类型的移动中提供程序集中于另一个程序集,以便客户端代码不必重新编译。

用户定义的特性(C++ 组件扩展)

演示用户定义的特性。

#using指令(C++)

导入外部程序集。

XML 文档 (Visual C++)

使用 /doc(处理文档注释)(C/C++),以适应 XML 基于代码文档

请参见

其他资源

编程在Visual C++的.NET

本机和 .NET 的互操作性