文/刘涛
例如:
ref class R { private: int m_a; public: R(int a): m_a(a) {} }; |
你可能认为"ref"是C++/CLI中的一个新关键词,但实际上它不是,"Ref class"是一个关键词,其他的一些类似关键词是:"value class",""interface class"和"enum class"。因为以前几乎写的每一个C++程序都含有一个叫"Value"的变量,我非常高兴它没有变成一个关键词。
一个ref class 是一个托管类,一个生存在托管堆上并由垃圾收集器管理的类。正如我先前说的,你可以在栈上创建实例,编译器将通过一个隐藏的灵巧的指针来管理该对象。
五、属性
C++的属性变化非常大,因为我在文章的开篇讲述了托管C++中属性的尴尬,现在就让我们以简洁的C++/CLI版本来结束吧。
ref class R { private: int m_Size; public: property int Size { int get() { return m_Size; } void set(int val){m_Size = val;} } }; R r; r.Size = 42; |
属性是否是关键词,从某种意义上可以这么说,它是一个定位型的关键词,所以你可以毫无冲突地将一个变量或函数称为属性,就象上面的代码那样,它只是在类的定义中有特殊的含义。现在的C++/CLI语言支持将属性定义为一个单独的单元,相对与以往的方式,我更喜欢新的方式,相信你也是这样。
[上一页] [1] [2] [3] [4]