Size of derived class, in case of multiple inheritance

Why, here the size of class 'Derived' is 8 ?

class Base1
{
 public:
  virtual void f() {  }
};
class Base2
{
 public:
  virtual void f() {  }
};
class Derived : public Base1, Base2
{
 public:
  virtual void f() {  }
};

'virtual' means, 'keep a record inside the class for which function I should call'. Otherwise, the compiler doesn't know anything except the type of the variable/pointer.

For example:

class Base1
{
 public:
  void f() {  }
};

class Derived : public Base1
{
 public:
  void f() {  }
};

main() {
        Base1 *p=new Derived();
        p->f(); // Without virtual, it calls Base1's f()
}

Adding virtual allows it to remember that f() was overloaded / replaced. This memory takes a little space.