0

如果您将创建一个完全空类的对象,则它的大小将> 0,如标准所保证的(以便两个对象具有不同的地址)。但我很感兴趣这个字节中存储了什么(一些值、索引、地址)?有什么方法可以知道这一点吗?

4

4 回答 4

1

从技术上讲,那里存储的是Unspecified
简而言之,它由实施决定,实施不需要记录行为。

于 2013-02-25T18:08:56.470 回答
1

它与用于填充例如 acharint成员之间的间隙的任何其他填充物具有相同(未知、未定义)的内容。与“空白填充物”一样,它除了“确保数据的放置有效”之外没有其他目的。如果空类的大小为零,则由两个此类对象组成的数组将占用零字节,并且两个对象将具有相同的地址,这对于各种事物来说都会变得相当奇怪。

于 2013-02-25T18:09:35.337 回答
0

如果我没记错的话,标准保证空类的对象将占用空间。它没有确切说明有多少空间,也没有说明存储在那里的内容,所以这取决于实施者。

如果您想知道给定空间中有什么,您可以重新解释 cast 并查看一下。

于 2013-02-25T18:08:07.873 回答
0

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

于 2013-02-25T18:08:27.280 回答