语法
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 说明符。
name
类或结构的名称。
modifier(可选)
abstract 和 sealed 是有效修饰符。
inherit_access(可选)base_type
的可访问性。 唯一允许的可访问性是 public
(public
是默认值)。
base_type(可选)
基类型。 但是,值类型不能充当基类型。
有过详细信息,请参阅 Windows 运行时 和 公共语言运行时 部分中此参数的特定于语言的描述。
备注
使用 ref class 或 value class 声明的对象的默认成员可访问性是 private
。 而使用 ref struct或 value struct 声明的对象的默认成员可访问性是 public
。
当某种引用类型继承自其他引用类型时,基类中的虚函数必须显式重写(使用 override)或隐藏(使用 新的 (在 vtable 的新槽))。 派生类函数还必须显式标记为 virtual
。
若要在编译时检测类型是 ref class
还是 ref struct
,或是 value class
还是 value struct
,请使用 __is_ref_class (``type``)
、__is_value_class (``type``)
或 __is_simple_value_class (``type``)
。
备注
请参阅 Ref 类和结构和 Value 类和结构。
参数
base_type(可选)
基类型。 ref class
或 ref struct
可以继承自零个或多个接口以及零种或一种 ref
类型。 value class
或 value struct
只能继承自零个或多个接口。
使用 ref class
或 ref struct
关键字声明对象时,对象通过对象句柄进行访问;即,指向对象的引用计数器指针。 声明的变量超出范围时,编译器会自动删除基础对象。 当对象在调用中用作参数或存储在变量中时,实际是在传递或存储该对象的句柄。
使用 value class
或 value struct
关键字声明对象时,不会监督声明的对象的对象生存期。 该对象如同任何其他标准 C++ 类或结构一样。
备注
下表列出与所有运行时部分中显示的语法之间的特定于 C++/CLI 的差异。
参数
base_type(可选)
基类型。 ref class
或 ref struct
可以继承自零个或多个托管接口以及零种或一种 ref 类型。value class
或 value struct
只能继承自零个或多个托管接口。
ref class
和 ref struct
关键字会告知编译器要在堆上分配类或结构。 当对象在调用中用作参数或存储在变量中时,实际是在传递或存储该对象的引用。
value class
和 value struct
关键字通知编译器,已分配类或结构的值已传递给函数或存储在成员中。