关于AFX_MSGMAP_ENTRY结构中最后一个成员的困惑

在MFC编程中,消息映射表中的AFX_MSGMAP_ENTRY结构中最后一个成员是AFX_PMSGpfn,意思是一个消息处理函数的指针。AFX_PMSG是这样定义的:Ty... 在MFC编程中,消息映射表中的AFX_MSGMAP_ENTRY结构中最后一个成员是AFX_PMSG pfn,意思是一个消息处理函数的指针。AFX_PMSG是这样定义的:
Typedef void (AFX_MSG_CALL CCmdTarget::*AFX_PMSG)(void)
我不能理解的是,如果这个消息处理函数不是CCmdTarget类的成员函数,而是其派生类的比如说CView的成员函数,那么这样定义不是错误的吗?AFX_PMSG定义的类型是作用域在CCmdTarget类的函数指针,而我定义的消息处理函数的作用域在CView内。这不矛盾吗?请问怎么理解这个定义。
展开
 我来答
haiyangfenghuo
推荐于2016-12-01 · TA获得超过2439个赞
知道大有可为答主
回答量:2388
采纳率:0%
帮助的人:776万
展开全部
根据多态的定义,基类的指针指向了子类的对象,如果满足虚函数的定义,是可以指向子类的对象的,也就是可以再子类中使用的。
追问
谢谢你的回答。
但所谓的多态,如果存在虚函数的话,用派生类指针赋值给基类指针,这个指针其实并不是真正意义上的指向派生类对象,只是用派生类的虚函数代替了基类的虚函数而已(即从虚函数表中读取的是派生类虚函数的指针)。
单就这个问题来说,是通过强制转换来完成上述类型转换的。我个人认为和多态没有关系。
追答
你的回答前部分是对的,但指针并不是真正意义上的指向派生类对象不敢苟同,因为你可以根据查看对象类型来查看当前指针。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式