虚继承的内存布局
我试图全面了解虚继承和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
};
Top
应该是多态的吗? - curiousguyExample 2
中,底部类布局中Right::a
不应该出现在Right::c
之后吗? - infinite loop