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();

|