Crest的语法:宏的魔术汇演计算机等级考试

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


  最理想的面向对象语法当然是仿造C#、java这样的结构了,但是因为C语言要用头文件,所以估计最终的样式还是类似于C 。首先我们还是制定一个目标的样式,然后再去用Crest仿造实现。目标是这样的[代码1]:

  class CString: CObject, IUnknown, IDispatch

  {

  int length.

  char * buffer.

  public virtual void Format(char * format)

  {

  DoFormat(format).

  }

  public void DoFormat(char * format)

  {

  if( OnFormat != null ) OnFormat(format).

  }

  public abstract void OnFormat(char * format).

  }

  要想用Crest实现上面的结构,有几个问题要注意:

  this指针。所有的对象成员定义和调用都隐含有一个this指针

  命名规范,CString的Format和CDateTime的Format肯定不是同一个东西,但是C语言不支持override,所以要保证成员函数不重名。

  经过两天的断断续续工作,最终呈现结果如下[代码2]:

  DECLARE_CLASS(CString)

  EXTENDS(CObject, IMPLEMENT2(IUnknown,IDispatch))

  DECLARE_FIELD(CString, int, length)

  DECLARE_FIELD(CString, char *, buffer)

  DECLARE_VIRTUAL1(CString, void, Format, const char * format)

  DECLARE_ABSTRACT1(CString, void, OnFormat,const char * format)

  DECLARE_METHOD1(CString, void, DoFormat,const char * format)

  DECLARE_CONSTRUCTOR(CString)

  DECLARE_DESTRUCTOR(CString)

  END_DECLARE(CString).


相关文章


C socket编程基础(理论篇)计算机等级考试
纯C 的Socket访问Http封装类计算机等级考试
线性表:顺序储存结构计算机等级考试
关于类的static数据成员和成员函数计算机等级考试
Crest的语法:宏的魔术汇演计算机等级考试
关于GetDC与GetWindowDC的区别计算机等级考试
计算机二级辅导:VisualC 调试时查看数组内容计算机等级考试
计算机二级辅导:合并排序计算机等级考试
一个简单的字符驱动程序计算机等级考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛