映射函数与类的虚函数有什么差别

文米 2001-03-17 09:39:00
在程序中虚函数是可以被重载的,但我要想通过某一消息,如单击鼠标左键,可以出发折椅虚函数,就是说我能否把内制虚函数改编成映射函数!
...全文
122 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lmfree 2001-03-19
  • 打赏
  • 举报
回复
虚函数和消息映射在mfc中其实毫不相干,彼此没什么联系,
消息影射就是完成消息和函数的对应关系的,
无论这个函数是不是虚函数。
Schuman 2001-03-19
  • 打赏
  • 举报
回复
虚函数是用于多态的,joke说的显式调用大概就是明明白白的调用的意思,就是说派生类的函数与基类的被重载函数没什么牵扯,在派生类的函数中调不调用基类的被重载函数都可以
文米 2001-03-19
  • 打赏
  • 举报
回复
在派生类中“显式调用“ 的含义是什么,是不就是即调用来基类的函数的共性的东西(CDialog::OnInitDialog();// 显式调用基类的),而所谓的重载就是把具体的功能加了进来(...
// CMyDlg本身的操作代码
...)
文米 2001-03-19
  • 打赏
  • 举报
回复
谢谢你!
但我还是不是很清楚它们之间的差别,能说得更详细写吗?
虚函数是c++类的范畴,映射函数是MFC范畴,但他们之间的相同点,或者说是相互关系又怎样?
希望与大家讨论!
joke100 2001-03-17
  • 打赏
  • 举报
回复
这是两个不同的概念喽.
所谓的映射函数就是消息处理函数了,其实它只是普通的函数啦,跟虚函数不是一个概念.
虚函数是C++的概念,而映射函数是MFC对消息处理封装的一套机制...

其实对于消息处理也可以用虚函数机制来实现,但是效率会降低,在MFC 技术内幕上有这方面的阐述.所以MFC最终采用的是消息映射.

因为虚函数重载后派生类的实现一般是一种不同于基类实现的另外一个行为描述,而在消息处理中我们经常把子类所做的事跟基类所做的事独立的放在一起分别调用,这样的显式调用更加明确.
比如:

class CMyDlg : public CDialog
{
....
};

// 分工明确的消息处理
BOOL CMyDlg::OnInitDialog()
{
CDialog::OnInitDialog(); // 显式调用基类的
...
// CMyDlg本身的操作代码
...
}

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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