在联合中,最多只能有一个非静态数据成员在任何时候处于活动状态,即 at 的值
大多数非静态数据成员可以随时存储在联合中。
C + + 后来的语言允许使用包含具有公共初始序列的 struct的联合,但是不允许类型双关。
为了确定在 C + + 中是否允许联合类型双关 是,我们必须进一步搜索。回想一下,C99是 C + + 11的标准参考(C99的语言与 C11类似,允许联合类型双关) :
3.9类型[ basic.type ]
类型 T 的对象的对象表示形式是由
类型 T 的对象,其中 N 等于 sizeof (T)。一个对象的值表示是一组位
保存类型 T 的值对于普通的可复制类型,值表示是对象中的一组位
表示形式,该表示形式确定一个值,该值是实现定义的
值 < sup > 42
目的是使 C + + 的内存模型与 ISO/IEC 9899编程语言 C 的内存模型兼容。
当我们阅读的时候,它变得特别有趣
3.8对象生存期[ basic.life ]
T 类型对象的生存期从以下时间开始:
ーー获得适合于 T 型的对齐和大小的存储器,并且
ー如果对象具有非平凡的初始化,则其初始化完成。