| struct Demo1 { property int Val { // 一个非常简单的整型、分级属性。 int get() const { ++Demo1::access_count; return this->value; } void set(int v) { ++Demo1::access_count; this->value = v; } } private: int value; static unsigned long access_count; }; int main() { Demo1 d; d.Val = 3; // 调用"set"操作函数。 return d.Val; //调用"get"函数。 } |
| struct VirtualProp { virtual property int Val = 0 { int get() const; // 纯虚函数. virtual void set(int v); //纯虚函数,这里关键词"virtual"是多余的。 } // ... }; |
上述例子显示了通常情况下遇到的一些简单的、非静态的、分层次的属性实例。C++/CLI文档包含了大量的概念变化,下文将进行解释。
二、动机
在标准C++的上下文中,属性约定成俗地使用"get和set函数"文法,这种文法将暴露的数据和谐地转换为封闭地状态信息。在更精细的实时框架上下文中(具体的说是微软的.NET框架),属性是可以通过映射实时发觉和修改的元素。例如,现代的GUI库将它的组件参数声明为属性,可视化的界面构筑工具装载这些库,使用装载各种组件的属性列表并将结果展现到用户面前,当用户修改了一个属性,存取操作函数将被调用,例如这将触发各种GUI更新事件。
http://dev.xuezhishi.net/program/VC/2007-06-21/18475.html