C ++ Виртуальное наследование памяти

Макеты памяти виртуального наследования

Я пытаюсь полностью понять, что происходит под капотом в памяти с виртуальным наследованием и vTables / vPtrs, а что нет.

У меня есть два примера кода, который я написал, и я точно понимаю, почему они работают, однако я просто хочу убедиться, что у меня есть правильное представление о разметке памяти объектов.

Вот Вот два примера на картинке, и я просто хочу знать, правильны ли мои представления о разметке памяти.

Пример 1:

class Top { public: int a;  };
class Left : public virtual Top {  public: int b; };
class Right : public virtual Top { public: int c; };
class Bottom : public Left, public Right { public:  int d; };

Пример 2:

То же, что и выше, но с:

class Right : public virtual Top {
public:
    int c;
    int a;  // <======= added this
};

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

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