属性,是面向对象程序设计中不可缺少的元素,广义的属性是用来描述一个对象所处于的状态。
而我们这篇文章所说的属性是狭义的,指能用“=”操作符对类的一个数据进行get或set操作,而且能控制get和set的权限。
        先看一下代码:
#include <IOSTREAM>
#include <map>
#include <string>
#include <CONIO.H>

using namespace
std;
class
propertytest{
int
m_xvalue;
int
m_yvalues[100];
map<string,string> 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 << test.x <<std::endl;
std::cout << test.y[3] <<std::endl;
std::cout << test.z["aaa"] <<std::endl; getch();
return
0;
}

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