关于MFC动RTTI的一个小问题!

ep2980 2009-03-05 09:54:53
现在我遇到了我RTTI有一点小问题!先写一个书上写书上的一段代码吧!深入浅出MFC97页!

struct CRuntimeClass

{

LPCSTR m_lpszClassName;

int m_nObjectSize;

UINT m_wSchema;

CObject * (PASCAL * m_pfnCreateObject)(); //为啥有动态分配就非空?

CRuntimeClass * m_pBaseClass;

static CRuntimeClass * pFirstClass; //这个指针有什么用?

CRuntimeClass * m_pNextClass; //这个指针有什么用?

};

pFirstClass老是指向什么?





就上面的结构本,我来问一个函数,深入浅出MFC109页!

BOOL CObject::IsKindOf( const CRuntimeClass *pClass)const

{

CRuntimeClass * pClassThis = GetRuntimeClass();//这一行作什么用?

while (pClassThis != NULL)

{

if (pClassThis != NULL)

return TRUE;

pClassThis =pClassThis->m_pBaseClass;

}

return FALSE;

}

这个函数我有一点没有理解!

我先说一个例子,你用这个例子和我说一下(小心被我误到里面哦)

CWnd * wnd;

cout << wnd->IsKindOf(CDocment); //输出0

我感觉它们有共同的基类CCmdTarget,那个指针不断的指像基类指指的不就指到CCmdTarget了吗,不就也相等了吗,

cout << wnd->IsKindOf(CCmdTarget); //输出1,这里我最不懂了,子类的子类怎么可以会父类的指针相等呢?还是我理解的不对?
...全文
23 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

64,691

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧