属性,是面向对象程序设计中不可缺少的元素,广义的属性是用来描述一个对象所处于的状态。而我们这篇文章所说的属性是狭义的,指能用“=”操作符对类的一个数据进行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 ;
}
相关文章: