技术开发 频道

C++:最强大的.NET语言之装箱

    编写引用和值类型

    在C#中,通常用关键字class来声明一个引用类型,而用关键字struct来声明值类型:
class ReferenceType {} struct ValueType {}
    对于class和struct,C++已经有定义好了的含义,所以这在C++中行不通。在最初的语言设计上,放置在类前的关键字__gc表示这是一个引用类型,而关键字__value则表示这是一个值类型。
__gc class ReferenceType {}; __value class ValueType {};
    C++/CLI在那些不会与用户的其他标识符发生冲突的地方引入了"空隔"关键字。为了声明一个引用类型,只需在class或struct之前加上ref,类似地,可用value来声明值类型。

ref class ReferenceType {}; ref struct ReferenceType {}; value class ValueType {}; value struct ValueType {};
    关于使用class还是struct,与默认状态下类成员的可见度有关,在CLR中,最大的不同之处在于,只支持公有继承。使用private(私有)或protected(保护)继承都将会导致编译错误,因此,显式声明公有继承是合法但却多余的。
0
相关文章