1、动态创建机制的作用
在不知道类名的情况下,将类的对象创建出来。
2、动态创建机制的使用
2.1类必须从CObject派生
2.2类内必须添加声明宏 DECLARE_DYNCREATE
2.3类外必须添加实现宏 IMPLEMENT_DYNCREATE
CRuntimeClass::CreateObject -负责创建类对象
3、动态创建机制的实现(相较于运行时类信息来说)
3.1多了一个静态函数 CDog::CreateObject
3.2静态变量的第四个成员不再为NULL,保存新增加的那个静态函数的地址
4、宏展开的各部分的作用
classCDog -静态变量,保存了关于类信息,负责连接链表,保存了静态函数的地址(CDog::CreateObject)
GetRuntimeClass() -虚函数,获取本类(CDog)的静态变量地址(链表头节点)
CreateObject() -静态函数,new了一个CDog类的对象并返回对象地址
5、动态创建机制的执行过程
5.1利用本类静态变量地址(&CDog::classCDog)调用CRuntimeClass结构体成员函数CreateObject
5.2在函数内部取出静态变量的第四个成员(CDog::CreateObject)并调用之
5.3在CDog::CreateObject函数内部new了一个CDog类的对象并返回对象地址。
时间: 2024-10-16 22:01:00