编程语言

img xMars

Implementation of Polymorphism

发表于2004/12/31 9:55:00  1127人阅读

分类: ASM/C/C++

class Class1
{
  public:
    m_data1;
    m_data2;
    memfunc();
    virtual vfunc1();
    virtual vfunc2();
    virtual vfunc3();
};


Class1 object instance:

   ━━━━━━━━━
  ┃  vptr    ┃ ──>      vtable
       ━━━━━━━━━       ━━━━━━━━━  
     ┃    m_data1               ┃     ┃    (*vfunc1)()          ┃──>Class1::vfunc1()
      ━━━━━━━━━         ━━━━━━━━━
    ┃    m_data2               ┃     ┃ (*vfunc2)()             ┃──>Class1::vfunc2()
      ━━━━━━━━━         ━━━━━━━━━
                                                   ┃ (*vfunc3)()              ┃ ──>Class1::vfunc3()
                                                     ━━━━━━━━━
class Class2: public Class1 {

  public:
    m_data3;
    memfunc();
    virtual vfunc2();
 
};
Class2 object instance:
    ━━━━━━━━━
   ┃  vptr    ┃──>      vtable
    ━━━━━━━━━         ━━━━━━━━━  
   ┃    m_data1              ┃     ┃ (*vfunc1)()             ┃──>Class1::vfunc1()
    ━━━━━━━━━         ━━━━━━━━━
   ┃    m_data2              ┃     ┃ (*vfunc2)()             ┃──>Class2::vfunc2()
    ━━━━━━━━━         ━━━━━━━━━
   ┃    m_data3              ┃     ┃ (*vfunc3)()             ┃──>Class1::vfunc3()
    ━━━━━━━━━         ━━━━━━━━━           Class2::memfunc();

阅读全文
0 0

相关文章推荐

img
取 消
img