【发布时间】:2018-12-07 13:50:18
【问题描述】:
在 C++ 中,如果我这样声明一个类/结构:
struct Data
{
int member0;
int member1;
};
在大多数编译器中,member0 在对象表示中的出现早于member1。
标准是否规定了这种行为,或者理论上允许编译器在对象表示中将member1 放在member0 之前?
标准对此有什么说法,在哪里说的?
(如果强制行为在任何时候发生了变化,我对所有标准版本都感兴趣。)
【问题讨论】:
-
你的意思是结构实例的内存布局吗?
-
您想确切了解这个特定的结构,还是在寻找更一般的答案?这个具体的例子很简单,一般的答案几乎可以是它自己的书。
-
“分配具有相同访问控制的(非联合)类的非静态数据成员,以便以后的成员在类对象中具有更高的地址” 所以是的,@ 987654326@ 必须早于
member1 -
@CoryKramer 这不是那个问题的重复,那个问题是关于
dynamic_cast和reinterpret_cast。
标签: c++ object memory language-lawyer standards