C 类成员属性的一种简洁实现计算机等级考试

文章作者 100test 发表时间 2010:01:01 13:05:34
来源 100Test.Com百考试题网


  一般来说对于标准C 而言是不存在成员属性这个概念的,以前大家都是用GetXXX/SetXXX来访问或取得数据,好象也没有感觉到任何不便。但是当我们用过C#之类的语言之后,我们总觉得C 这个方式太老土了。于是我们想 ...

  一般来说对于标准C 而言是不存在成员属性这个概念的,以前大家都是用GetXXX/SetXXX来访问或取得数据,好象也没有感觉到任何不便。但是当我们用过C#之类的语言之后,我们总觉得C 这个方式太老土了。于是我们想去实现“属性”这个C 语言缺乏的要素。事实上网络上有很多人已经做了这部分工作,实现的方法有很多种,一种是用模板,一种是根据特定语言来写的,如VC(指的是Microsoft实现的C )。但是它们要么很复杂,要么很难记住它的准确用法,嗯我总是喜欢简单的东西,因为太复杂的东东会让我的头脑当机。废话少说,来看看如何实现。

  在实现之前,我必需先探讨一下为什么需要“属性”这个东东。比如说下面雇员这个类:

  class CEmployee

  {

  public:

  int Old. //年龄

  }.

  CEmployee employee.

  employee.Old=22.

  int old =employee.Old.

  它有一个成员变量,我们可以直接对它们进行赋值或者读取,但是往往会缺少一个很重要的东东,就是不能对所赋值进行校验,这可是个大问题,比如我们给 Old一个负值,比如-50,提示程序运行时不会有任何错误,但是的确这个成员变量的值在逻辑上是不正确的。于是我们会写上GetOld、SetOld。现在OK了,这个小问题解决了,但新问题来了。我们的类使用者,他们需要重新把他们的代码成写如下的样子,而不是上面的那样。

  CEmployee employee.

  employee.SetOld(22).

  int old =employee.GetOld().

  你的伙伴一定会在写代码时诅咒你写了一个垃圾的类。所以你决定要改变这个现状。很幸运,你是MS的忠实用户,而且你对于MSDN看很仔细,所以你知道可以这样来写

  class CEmployee

  {

  private:

  int m_old.

  public:

  _declspec(property(get= GetOld,put=SetOld))int Old.

  int GetOld(void)

  {

  return m_old.

  }


相关文章


关于C 中的内联函数(inline)计算机等级考试
Gauss消元法求解线性方程组计算机等级考试
列主元消元法求解线性方程组计算机等级考试
c 中友元的一些总结计算机等级考试
C 类成员属性的一种简洁实现计算机等级考试
VisualC 很简单的木马代码计算机等级考试
对C 中指针类型的研究计算机等级考试
在VC中对C_C 运行时库不同版本编译指令简单说明计算机等级考试
计算机二级辅导:c 中的get函数计算机等级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛