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
};