为什么标准布局类的成员必须具有相同的访问控制
Why must members of standard layout classes have the same access control?
引用 [class.prop]/3 中的标准:
在以下情况下,类 S 是标准布局类:
- 对所有非静态数据成员具有相同的访问控制,
我的理解(也许我错了)一直是C++访问控制不会以任何方式影响类的物理布局 - 它们纯粹是一种增强封装的编译时机制。(或者换句话说,将成员从私有更改为公共并不是 ABI 的突破性更改。
如果是这种情况,那么对标准布局类进行此限制的原因是什么?
访问控制确实会影响布局:在一个访问控制级别内,非静态数据成员的地址按声明顺序增加,但对不同访问级别的地址没有要求。
由于标准布局是关于成员地址的,因此该要求可确保所有成员地址都按明确定义的顺序排列。
相关文章:
- 寻求更好地理解标准::访问
- 用户控制从 c++ 到 java 脚本的 Webassembly 访问调用
- 我可以从标准::访问返回汽车吗?
- 将积分类型的数组作为另一个不相关的积分类型的阵列进行访问的安全且符合标准的方法
- 访问控制和静态成员
- 访问控制对于已删除的构造函数是否重要?
- 模板参数中的访问控制
- 处理对存储在私有映射中的值的封装访问的标准方法,而不破坏C++中的抽象
- 为什么标准布局类的成员必须具有相同的访问控制
- Arduino以太网访问控制问题
- 基于角色的访问控制C 库或示例
- c++11标准布局-使用相同的访问控制
- 为什么拥有不同访问控制权限的成员的工会不是标准布局
- Qt中的访问控制
- 我需要使用 ext4 文件以编程方式获取和设置 Ubuntu 14.04 台式计算机的 ACL(访问控制列表)
- 对成员模板函数的访问控制
- CLI/ c#类中属性的特殊访问控制
- 共享文件视图-访问控制
- visual C++访问控制
- gcc的Bug?模板类中友元函数的访问控制问题