根据C ++标准:
标准布局类是一个类:
- 没有类型为非标准布局类(或此类类型的数组)或引用的非静态数据成员。
引用的哪些属性会阻止具有引用成员的类包含在标准布局类的定义中?
答案 0 :(得分:11)
标准布局类是关于为内存中的特定类型定义良好的布局。在C ++中,引用不是对象,因此没有任何存储可以通过一致的程序以明确定义的方式访问,即使实现通常必须为它们提供某种特定于实现的存储。
由于这个原因,将引用成员放在必须具有标准布局的内容中是没有意义的。
关于C ++内存模型的部分标准中有一个非规范性的注释提到:
[注意:该语言的各种功能,例如引用和虚函数,可能涉及程序无法访问但由实现管理的其他内存位置。 - 后注]