VC中的“__declspec”能作什么(2)-为类增加属性

王朝vc·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

?????? 属性,是面向对象程序设计中不可缺少的元素,广义的属性是用来描述一个对象所处于的状态。而我们这篇文章所说的属性是狭义的,指能用“=”操作符对类的一个数据进行get或set操作,而且能控制get和set的权限。

??????? 先看一下代码:

#include

#include

#include

#include

using namespace std;

?

class propertytest

{

?int m_xvalue;

?int m_yvalues[100];

?map m_zvalues;

public:

?__declspec(property(get=GetX, put=PutX)) int x;

?__declspec(property(get=GetY, put=PutY)) int y[];

?__declspec(property(get=GetZ, put=PutZ)) int z[];

?int GetX()

?{

??return m_xvalue;

?};

?void PutX(int x)

?{

??m_xvalue = x;

?};

?

?int GetY(int n)

?{

??return m_yvalues[n];

?};

?void PutY(int n,int y)

?{

??m_yvalues[n] = y;

?};

?string GetZ(string key)

?{

??return m_zvalues[key];

?};

?void PutZ(string key,string z)

?{

??m_zvalues[key] = z;

?};

};

int main(int argc, char* argv[])

{

?propertytest test;

?test.x = 3;

?test.y[3] = 4;

?test.z["aaa"] = "aaa";

?std::cout

?std::cout

?std::cout

?getch();

?return 0;

}

???

?????? 请注意程序中属性的定义方法:

?__declspec(property(get=[get方法名], put=[put方法名])) [类型] [属性名];

??????? __declspec(property)实际上就是做了一个映射,把你的方法映射成属性,以供访问。get和put就是属性访问的权限,一个是读的权限,一个是写的权限。你可以根据需要来决定get和put两种权限的取舍。

相关文章:

VC中的__declspec能作什么-前言

第一章 VC中的“__declspec”能作什么(1)-定义接口

第二章 VC中的“__declspec”能作什么(2)-为类增加属性

?

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航