Struktury i C++
Tablice funkcji wirtualnych
class A {
public:
  int a;
  virtual void v();
};
 
class B : public A {
public:
  int b;
  virtual void w();
};
 
class C : public A {
public:
  int c;
  virtual void x();
};
 
class D : public B, public C {
public:
  int d;
  virtual void y();
};
                           +-----------------------+
                           |     0 (top_offset)    |
                           +-----------------------+
d --> +----------+         | ptr to typeinfo for D |
      |  vtable  |-------> +-----------------------+
      +----------+         |         A::v()        |
      |     a    |         +-----------------------+
      +----------+         |         B::w()        |
      |     b    |         +-----------------------+
      +----------+         |         D::y()        |
      |  vtable  |---+     +-----------------------+
      +----------+   |     |   -12 (top_offset)    |
      |     a    |   |     +-----------------------+
      +----------+   |     | ptr to typeinfo for D |
      |     c    |   +---> +-----------------------+
      +----------+         |         A::v()        |
      |     d    |         +-----------------------+
      +----------+         |         C::x()        |
                           +-----------------------+

Tomasz Kapela, Kraków 2011-2020