类和结构(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 class 或 value class 是 private。 和对象的默认成员可访问性声明 ref struct 或 value 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++ 类或结构。
要求
编译器选项: /ZW
公共语言运行时
备注
下表列出了特定于 C++/CLI 在 所有运行时 部分显示的语法的差异。
参数
base_type (可选)
基类型。 ref class 或 ref struct 能从零或托管接口以及零个或一个 ref 类型继承。 value class 或 value struct 能从零或托管接口只继承。ref class 和 ref struct 关键字通知编译器类或结构将在堆中分配。 当对象在变量时用作参数在调用或存储,对对象的引用实际上将或存储。
value class 和 value struct 关键字通知编译器分配的类或结构的值在成员传递给函数或存储。
要求
编译器选项: /clr