用C实现C++的多态
来源:优易学  2010-1-14 11:19:29   【优易学:中国教育考试门户网】   资料下载   IT书店

 

  简单的说:如果C继承于B,B继承于A,现在假设A、B还未注册,当注册C时,通过递归也能把B、A注册上。

  int GetObjectType(void)

  {

  static int type = 0;

  if( type==0 )

  {

  static ClassInfo classinfo =

  {

  "OBJECT", /*对象名,唯一*/

  sizeof(CObject),

  sizeof(CObjectClass),

  (pInitObjectCallback)InitObject,

  (pInitClassCallback)InitObjectClass,

  };

  type = RegisterClassType(&classinfo, TOP_OBJECT_TYPE);

  }

  return type;

  }

  我们再来看一看InitObject和InitObjectClass,

  static void InitObjectClass(CObjectClass *vclass)

  {

  if(vclass==NULL)

  return;

  vclass->destory = DestoryObject;/*对虚函数赋值*/

  }

  static void InitObject(CObject *object)

  {

  if(object==NULL)

  return;

  object->ref_counter = 1;

  }

  这两个函数在GetObjectType()被传进去,那么又是在哪儿被调用的呢?

  让我们看RegisterClassType()

  int RegisterClassType(ClassInfo *classinfo, int parent_type)

  {

  int type = 0;

  ClassDesc *current, *parent;

  parent = (ClassType *)parent_type;

上一页  [1] [2] [3] [4] 下一页

责任编辑:cyth

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训