为什么消息映射要用宏而不是虚函数? <<深入浅出MFC>>会对你有帮助 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 老实说我初用mfc的时候就从来没有想到过这种问题。有差距。 If use virtual functionThe CWnd need more than 110 message declare每个派生类都要有虚汗数分发表,(vtable)其入口sizeof(entry) == 4bytesThenEvery application have more than 4 * 100 byte(440kb)'s table to use message,It's too stupid(大寒字好类) 对,深入浅出中有明确的答案,我同意code_cold(橘右京傲战八方)的看法。就是因为vptr要占用四个字节[WIN32]的空间,如果大量使用会造成浪费。 如果我不用纯虚函数也要有虚表指针吗? 你是说所有的父类的所有函数,不管是否调用,都要有虚表指针?Yes,可看一下<<Inside COM>>另外,说实话,我不认为深入浅出怎么样。 好像真的是既不深入也不浅出MFC是不桃人喜欢,太大了(mfc42.dll == 973k) 废话派生类要继承父类的所有vtab,否则,父类的vtab其不是名存实亡?虚函数的实现就是靠改写vtab来实现的 4 × 100 bytes = 440 kb?????????谁能解释一下? 4 × 100 bytes = 440 kb ??????好多书上都是这么写的,真不知是怎么算出来的? 主要是考虑效率,查表比虚函数调用快。另外,"派生类要继承父类的所有vtab"的说法恐怕不正确,因为一个类的vtab在整个系统中仅此一份,不存在继承的问题。 vc可用一些形式简单的宏来编制一个(一些)非常复杂的工作--如Dynamic Create ,Message Map等 一般这样很像函数装载,而非是某些函数的继承关系欲想了解详情请参见《深入浅出MFC》 回复人: rocmeteor(流星雨) ( ) 信誉:100 2002-3-5 12:53:10 得分:0 另外,说实话,我不认为深入浅出怎么样。 好像真的是既不深入也不浅出。 我看你根本就没有看懂《深入浅出》,这本书里讲得很详细,另:我建议你去看看c++的书,这似乎不属于mfc的内容。 不通的派生类也会产生vtable,假如有程序中有10个不同窗口,就会10个不同窗口基类的派生类,vtable开销不小.而再以这些派生类为基类向下继承,每继承一次就会产生一个vtable,继承层次一多,开枝散叶开销就更大了. 怎么说呢?刚开始我也有这种困惑,MFC把VTABLE转换成了CRUNTIME*因此解决了VTABLE的问题。花了很长时间才搞明白。不知对不对。 GDI数量限制问题? VS2008调试的一个怪现象 文件用文本模式和二进制模式打开用 _fgetts 去读,读出的东西不一样,用二进制读出的是什么? 基础问题 怎样才能让一个程序在同一时刻只有一个进程? 求助 MFC程序设计哪里有下载 一个关于邮件自动转发的问题?(急!!!100分!!!) 求救大虾!!! 用spawnl不能调用外部exe? 今天练手,发现这段代码别人也这么用,可我就搞不定 CTreeCtrl &pTreeCtrl=GetTreeCtrl();中的 “&”是什么意思? 如何知道程序运行系统上office的版本
The CWnd need more than 110 message declare每个派生类都要有虚汗数分发表,(vtable)
其入口sizeof(entry) == 4bytes
Then
Every application have more than 4 * 100 byte(440kb)'s table to
use message,
It's too stupid(大寒字好类)
你是说所有的父类的所有函数,不管是否调用,都要有虚表指针?Yes,可看一下<<Inside COM>>另外,说实话,我不认为深入浅出怎么样。
好像真的是既不深入也不浅出MFC是不桃人喜欢,太大了(mfc42.dll == 973k)
谁能解释一下?
好多书上都是这么写的,真不知是怎么算出来的?
欲想了解详情请参见《深入浅出MFC》
另外,说实话,我不认为深入浅出怎么样。
好像真的是既不深入也不浅出。
我看你根本就没有看懂《深入浅出》,这本书里讲得很详细,另:我建议你去看看c++的书,这似乎不属于mfc的内容。
因此解决了VTABLE的问题。花了很长时间才搞明白。不知对不对。