Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
根据 C++ 标准:
标准布局类是这样的类: — 没有非标准布局类(或此类类型的数组)或引用类型的非静态数据成员。
标准布局类是这样的类:
— 没有非标准布局类(或此类类型的数组)或引用类型的非静态数据成员。
引用的哪些属性会阻止具有引用成员的类包含在标准布局类的定义中?
标准布局类就是为内存中的特定类型提供良好定义的布局。在 C++ 中,引用不是对象,因此没有任何可以由符合程序以明确定义的方式访问的存储,即使实现通常必须为它们提供某种特定于实现的存储。
出于这个原因,在必须具有标准布局的东西中包含引用成员是没有意义的。
在关于 C++ 内存模型的部分的标准中有一个非规范性注释,其中提到了这一点:
[注意:语言的各种特性,例如引用和虚函数,可能涉及程序无法访问但由实现管理的额外内存位置。——尾注]