Виртуальное наследование и пустой vtable в базовом классе

Вот этот код:

#include <iostream>

class Base
{
   int x;
};

class Derived : virtual public Base
{
   int y;
};

int main()
{
    std::cout << sizeof(Derived) << std::endl; // prints 12
    return 0;   
}

Я читал, что когда какой-то класс виртуально наследуется, создается класс vtable для класса Derived, поэтому структура памяти выглядит следующим образом:

Derived::ptr to empty vtable
Derived::y
Base::x

и это 12 байтов. Вопрос в том, какова цель этогопустой vtable если виртуальных методов нет и как их использовать?

Ответы на вопрос(3)

Ваш ответ на вопрос