空C++类的一个字节中究竟存储了什么

What actually is stored in one byte of empty C++ class?

本文关键字:字节 究竟 存储 什么 一个 C++      更新时间:2023-10-16

如果您要创建一个完全空类的对象,则其大小将大于0,这是标准所保证的(按顺序,两个对象具有不同的地址(。但我感兴趣的是这个字节中存储了什么(一些值、索引、地址(?有什么办法知道这一点吗?

它的内容与用于填充charint成员之间的间隙的任何其他填充符相同(未知、未定义(。与"间隙填充器"一样,它除了"确保这些数据的位置正确"之外,没有其他用途。如果一个空类的大小为零,那么由两个这样的对象组成的数组将占用零个字节,并且两个对象都具有相同的地址,这将使各种事情变得非常奇怪。

从技术上讲,存储在那里的内容是未指定的
简而言之,这取决于实现,并且实现不需要记录行为。

如果我回忆正确,标准保证空类的对象将占用空间。它没有具体说明有多少空间,也没有说明那里存储了什么,所以这取决于实现者。

如果你想知道在给定的空间里是什么,你可以重新解释并看一看。

什么都没有,只是填充。您不能像使用任何其他填充一样,依赖于存储在那里的值,甚至根本不存在任何值。