<<深入浅出MFC>>会对你有帮助

解决方案 »

  1.   

    老实说我初用mfc的时候就从来没有想到过这种问题。有差距。
      

  2.   

    If use virtual function
    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(大寒字好类)
      

  3.   

    对,深入浅出中有明确的答案,我同意code_cold(橘右京傲战八方)的看法。就是因为vptr要占用四个字节[WIN32]的空间,如果大量使用会造成浪费。
      

  4.   

    如果我不用纯虚函数也要有虚表指针吗?
      你是说所有的父类的所有函数,不管是否调用,都要有虚表指针?Yes,可看一下<<Inside COM>>另外,说实话,我不认为深入浅出怎么样。
      好像真的是既不深入也不浅出MFC是不桃人喜欢,太大了(mfc42.dll == 973k)
      

  5.   

    废话派生类要继承父类的所有vtab,否则,父类的vtab其不是名存实亡?虚函数的实现就是靠改写vtab来实现的
      

  6.   

    4 × 100 bytes = 440 kb?????????
    谁能解释一下?
      

  7.   

    4  ×  100  bytes  =  440  kb  ??????
    好多书上都是这么写的,真不知是怎么算出来的?
      

  8.   

    主要是考虑效率,查表比虚函数调用快。另外,"派生类要继承父类的所有vtab"的说法恐怕不正确,因为一个类的vtab在整个系统中仅此一份,不存在继承的问题。
      

  9.   

    vc可用一些形式简单的宏来编制一个(一些)非常复杂的工作--如Dynamic Create ,Message Map等 一般这样很像函数装载,而非是某些函数的继承关系
    欲想了解详情请参见《深入浅出MFC》
      

  10.   

    回复人: rocmeteor(流星雨) (  ) 信誉:100  2002-3-5  12:53:10  得分:0  
     
     
      另外,说实话,我不认为深入浅出怎么样。
      好像真的是既不深入也不浅出。 
    我看你根本就没有看懂《深入浅出》,这本书里讲得很详细,另:我建议你去看看c++的书,这似乎不属于mfc的内容。
      

  11.   

    不通的派生类也会产生vtable,假如有程序中有10个不同窗口,就会10个不同窗口基类的派生类,vtable开销不小.而再以这些派生类为基类向下继承,每继承一次就会产生一个vtable,继承层次一多,开枝散叶开销就更大了.
      

  12.   

    怎么说呢?刚开始我也有这种困惑,MFC把VTABLE转换成了CRUNTIME*
    因此解决了VTABLE的问题。花了很长时间才搞明白。不知对不对。