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

声明 对象生存期 会自动托管类或结构。如果该对象不再是可访问的或超出范围时, Visual C++ 自动放弃分配给对象的内存。

所有运行时

语法

class_access ref class    name modifier :  inherit_access base_type {};
class_access ref struct   name modifier :  inherit_access base_type {};
class_access value class  name modifier :  inherit_access base_type {};
class_access value struct name modifier :  inherit_access base_type {};

参数

  • class_access (可选)
    类或结构的可访问性在程序集中。可能的值为 公共 和 private (private 这是默认值)。嵌套类或结构不能有 class_access 说明符。

  • name
    类或结构的名称。

  • 修饰符 (可选)
    摘要密封 有效的修饰符。

  • inherit_access (可选)
    base_type的可访问性。唯一允许的辅助功能。 public (public 这是默认值)。

  • base_type (可选)
    基类型。但是,值类型不能用作基类型。

    有关更多信息,请参见此参数的特定语言的说明。 Windows 运行时 和 公共语言运行时 部分。

备注

对象的默认成员可访问性声明 ref classvalue class 是 private。和对象的默认成员可访问性声明 ref structvalue struct 是 public。

当引用类型从其他适配器集继承时引用类型,必须显式重写 (与 重写(C++ 组件扩展)) 或隐藏了基类中的虚函数 (与 new(vtable 中的新槽)(C++ 组件扩展))。必须显式进行标记派生类函数为 virtual。

检测到编译时类型是否为 ref class 或 ref struct或 value class 或 value struct,使用 __is_ref_class (type), __is_value_class (type)或__is_simple_value_class (type)。有关更多信息,请参见 编译器支持类型特征(C++ 组件扩展)

有关类和结构的更多信息,请参见

Windows 运行时

备注

下表列出了特定于 C++/CX 在 所有运行时 部分显示的语法的差异。

参数

  • base_type (可选)
    基类型。ref class 或 ref struct 能从零个或多个接口以及零个或一 ref 类型继承。value class 或 value struct 能从零个或多个接口只继承。

    使用 ref class 或 ref struct 关键字时,在声明对象,该对象由处理获取对对象;即对对象的引用计数器指针。当该声明的变量超出范围时,编译器会自动删除基础对象。当对象在变量时用作参数在调用或存储,对对象的句柄实际上将或存储。

    使用 value class 或 value struct 关键字时,在声明对象,声明的对象生存期不会监督。对象与其他标准 C++ 类或结构。

6w96b5h7.collapse_all(zh-cn,VS.110).gif要求

编译器选项: /ZW

公共语言运行时

备注

下表列出了特定于 C++/CLI 在 所有运行时 部分显示的语法的差异。

参数

  • base_type (可选)
    基类型。ref class 或 ref struct 能从零或托管接口以及零个或一个 ref 类型继承。value class 或 value struct 能从零或托管接口只继承。

    ref class 和 ref struct 关键字通知编译器类或结构将在堆中分配。当对象在变量时用作参数在调用或存储,对对象的引用实际上将或存储。

    value class 和 value struct 关键字通知编译器分配的类或结构的值在成员传递给函数或存储。

6w96b5h7.collapse_all(zh-cn,VS.110).gif要求

编译器选项: /clr

请参见

概念

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