创建对象的实例
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);
}
}
责任编辑:cyth