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
(可选)程序集外部类或结构的可访问性。 可能的值为 public
和 private
(private
为默认值)。 嵌套类或结构不得包含 class_access 说明符。
类或结构的名称。
modifier
(可选)abstract 和 sealed 是有效修饰符。
inherit_access
(可选)base_type 的可访问性。 唯一允许的访问权限是 public
(public
是默认值)。
base_type
(可选)基类型。 但是,值类型不能充当基类型。
有关详细信息,请参阅“Windows 运行时”和“公共语言运行时”部分中对此参数的特定语言描述。
使用“ref class”或“value class”声明的对象的默认成员访问权限是 private
。 而使用“ref struct”或“value struct”声明的对象的默认成员访问权限是 public
。
如果引用类型继承自其他引用类型,必须显式重写(使用 override)或隐藏(使用 new(vtable 中的新槽))基类中的虚函数。 派生类函数还必须显式标记为 virtual
。
若要在编译时检测类型是 ref class 或 ref struct,还是 value class 或 value struct,请使用 __is_ref_class (type)
、__is_value_class (type)
或 __is_simple_value_class (type)
。 有关详细信息,请参阅编译器对类型特征的支持。
有关类和结构的详细信息,请参阅
实例化类和结构
参考类型的 C++ 堆栈语义
类、结构和联合
如何:定义和使用类和结构 (C++/CLI) 中的析构函数和终结器
用户定义的运算符 (C++/CLI)
用户定义的转换 (C++/CLI)
如何:包装本机类以供 C# 使用
泛型类 (C++/CLI)
Windows 运行时
请参阅 ref class 和 ref struct 以及 value class 和 value struct。
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
适用于 .NET 和 UWP 的组件扩展