Виртуальное наследование и пустой 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 если виртуальных методов нет и как их использовать?