1

引用[class.prop]/3中的标准:

如果满足以下条件,则S 类是标准布局类

  • 对所有非静态数据成员具有相同的访问控制,

我的理解(也许我错了)一直是 C++ 访问控制不会以任何方式影响类的物理布局——它们纯粹是一种增强封装的编译时机制。(或者换句话说,将成员从私有更改为公共并不是 ABI 破坏性更改。)

如果是这种情况,那么标准布局类的这种限制的原因是什么?

4

1 回答 1

1

访问控制对布局的影响很大:一个访问控制级别内,非静态数据成员的地址按声明顺序递增,但不同访问级别的地址之间没有要求。

由于标准布局是关于成员地址的,因此要求确保所有成员地址都处于明确定义的顺序。

于 2019-01-07T02:16:32.733 回答