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

 

  创建对象的实例

  CObject *NewObject(void) /*创建一个实例*/

  {

  return NewClassType(BASE_OBJECT_TYPE);

  }

  void *NewClassType(int class_type)

  {

  ClassType *pclass = NULL;

  void *object = NULL;

  if( pclass==0 )

  return NULL;

  pclass = (ClassType*)class_type;

  /*为实例分配内存空间*/

  object = (CObject*)malloc(pclass->object_size);

  if( object )

  {

  /*实例的虚函数指针指向它的对象的虚函数指针*/

  ((CObject*)object)->vclass = pclass->vclass;

  /*调用父对象的初始化函数,这个函数是递归函数,

  先初始化基对象,再初始化子对象,再初始化子子对象...*/

  InitParentObject(pclass, object);

  }

  return object;

  }

  static void InitParentObject(ClassType *current, void *object)

  {

  if( current )

  {

  if( current->parent )

  InitParentObject(current->parent, object);

  if( current->InitObjectCallback )

  current->InitObjectCallback(object);

  }

  }

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

责任编辑:cyth

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