动态创建中结构体CRuntimeClass比类型识别多了两个成员。
其中一个是CObject* CreateObject();成员
但在DECLARE_DYNCREATE(class_name)宏定义中又有一个函数,原型为:
static CObject* PASCAL CreateObject();
函数名都相同,它们两有什么关系吗?怎么能申明成同一个函数名呢?不解........................谢谢!
其中一个是CObject* CreateObject();成员
但在DECLARE_DYNCREATE(class_name)宏定义中又有一个函数,原型为:
static CObject* PASCAL CreateObject();
函数名都相同,它们两有什么关系吗?怎么能申明成同一个函数名呢?不解........................谢谢!
在声明了DECLARE_DYNCREATE/IMPLEMENT_DYNCREATE宏的类中,加入了新的成员函数
static CObject* PASCAL CreateObject();
其作用在于返回一个该类型的对象
将指向该函数的函数指针放在了CRuntimeClass结构体中的m_fnCreateObject项中,方便调用而同时在CRuntimeClass中加入了函数
CObject* CreateObject();
此函数就调用上面的记录了的函数因为动态生成的时候,程序中只能得到类对应的CRuntimeClass结构体,于是就调用它的CreateObject()函数,相当于是调用注册了的对应类中的静态函数CreateObject(),返回类的一个对象。
能不能详细说一下!当然如果你懂的话!
1.CRuntimeClass.CreateObject()
2.某个类::CreateObject()
二者为何不可以同名,作用于都不一样
相当于两个不同的类,当让可以有同样的成员函数名
不同的类/结构体当然可以有相同的成员函数名
微软的驱程模型都采用了委托的思想.每一层向下层扔irp,最后把控制硬件功能委托给HAL(硬件抽象层).函数之间的委托.呵呵.算我说话不严谨(没必要上纲上线).函数A调用函数B,我可以说函数A把某某子
功能委托给函数B.不过分吧不同类之间的函数同名,并且class A的函数只调用了class B中的同名函数.我可以说A某某函数
委托给b的某某函数.并且c++也可以做委托类. 呵呵,扯远了.