vc 父类实现一个虚函数,子类继承并也实现这个虚函数,子类调用这个虚函数,父类这个虚函数为什么不会执

比如说MFC中我在view类中添加一个OnCommand()函数,而想让父类CWnd类中首先获得需要在CWnd中定义OnCommand()这个虚函数,为什么定义后父类首先... 比如说MFC中 我在view类中添加一个OnCommand()函数,而想让父类CWnd类中首先获得需要在CWnd中定义OnCommand()这个虚函数,为什么定义后父类首先响应,这个多态性是如何实现的?谢谢! 展开
 我来答
金色潜鸟
2012-08-01 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5705万
展开全部
CWnd 的 OnCommand() 是虚函数:
virtual BOOL OnCommand(WPARAM wParam,LPARAM lParam);
它只传递信息(变量),并无具体处理和计算。相当于一个“接口”,留给继承类 覆盖/改写。

CView 是 CWnd 的 一个派生类,它需要 重写 (override)这个 函数,提供具体处理和计算。
CWnd 的 别的派生类,也可以重写这个 函数。

程序执行时,才决定到底调用哪个具体的重写 后的函数。-- 所谓“一个接口,多种方法”。
在CView里执行CView里的OnCommand()
在CDoc里执行CDoc里的OnCommand()
追问
那为什么会有一个先后响应OnCommand() 的问题,比如我在Frame类中捕获一个OnCommand() 消息响应,在View类中也添加一个OnCommand() 消息响应,为什么会先响应Framen类中的OnCommand()?
追答
当然会有先后。问题在你的逻辑设计。
coldbladd
2012-07-31 · TA获得超过135个赞
知道答主
回答量:111
采纳率:0%
帮助的人:91.2万
展开全部
通过虚表实现
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式