如果我们有以下代码:
struct Base
{
int x;
int y;
void foo();
virtual unsigned getCrc() = 0;
};
struct Derived1 : public Base
{
int a;
int b;
unsigned getCrc();
};
struct Derived2 : public Base
{
float a;
float b;
unsigned getCrc();
};
它是 C++ 标准,a
并且b
应该在内存之后x
和y
内存中吗?或者它是最常用的布置继承对象的方法?(即编译器事实上的标准)。
换句话说,我能保证:
Derived1 obj;
int* unsafe_internal_a = (int*)((unsigned)(&obj) + sizeof(Base));
编辑:我的问题是'内存布局是否包含在某些标准中?或者它依赖于编译器?该代码仅用于说明。