同一类名的虚函数表为什么有多个???
我在反编译一个用Visual C++6.0写的MFC应用程序时,发现同一类名的虚函数表有多个!如CButtont,CBitmap等.按理说,一个类只有一个虚函数表才对.十分不解.
盼高人解惑.

解决方案 »

  1.   

    继承的原因, 每个类用了一个slot来标记它的父类,如果是多得继承,那就会存在多个虚函数表,每个类都有一个表. 所以有多个.
      

  2.   

    czp_opensource(博心) :
    能否讲得详细些.最好有一个示例.谢谢.
      

  3.   

    《Inside The C++ Object Model》
      

  4.   

    一个类可以有多个虚表(好象), 但那是多继承的情况下吧?每个该类的实例有多个VTPTR, 指向各个基类的虚表
      

  5.   

    具体情况是这样:
    在我要分析的程序中,有几十个这样的虚函数表,从表中分析出它们都是从CDialog派生出来的类,重载了GetRuntimeClass(),这些虚函数表的第一项都相同.属同一个类(因为从GetRuntimeClass中我可以知道类名).
      

  6.   

    从CDialog派生出的类的虚表,
    不能算是CDialog的虚表.
    多继承可能出现多个虚表,但MFC是不用多继承的.