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

ep2980 ep2980 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
现在我遇到了我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,这里我最不懂了,子类的子类怎么可以会父类的指针相等呢?还是我理解的不对?
...全文

相关推荐

评论
收藏 已收藏
分享
返回顶部
ep2980
C++ 语言 65,214 成员 250,514 内容