最近,C++为空数据类型(如struct empty {}; )添加了特性[[no_unique_address]]。
空数据成员如何受益于有一个唯一的地址?
为什么标准不让所有空数据成员都没有地址呢?
为什么C++非静态数据成员需要唯一的地址?
发布于 2020-05-14 13:44:28
因为(除其他外),C就是这样做的。如果C++能够与C兼容布局,那么C++结构的空NSDM必须占用与等效C声明相同的空间。
空基类优化可以添加到C++中,因为基类不是C语言特性,所以与C的兼容性从来不存在任何问题。如果要允许空成员优化,就必须让C++程序员明确说明他们是否想使优化可用(因此,该类型与C类型不直接兼容)。你不能就这么把它扔到他们身上。
https://stackoverflow.com/questions/61797927
复制相似问题