【发布时间】:2016-01-03 00:14:59
【问题描述】:
为了跳过这里的一些重复并将问题缩小到更具体的范围,我将很快介绍我认为我理解的内容。
类是指向不同大小变量的指针,称为成员。如果成员大小不同,则都分配到最大成员大小的相同空间。
所以在内存中它们的大小都是相同的,因此我的问题是:一个类如何知道其成员的大小?
例子:
class foo
{
short a = 99;
int b = 88;
};
int main()
{
foo f;
for (int i = 0; i < sizeof(f); i++)
cout << (int)((char*)&f)[i] << " ";
return 0;
}
// Output:
// 99 0 -1 70 88 0 0 0
//
// where -1 and 70 are random bytes in memory
恭喜那些不明白的人我的主要问题:f如何知道在阅读成员a时如何返回short (99 0) 而不是 int (99 0 -1 70)?
【问题讨论】:
-
类不是指针,后面的内容没有意义。你似乎混淆了类和联合。
-
停止投射。如果您知道自己在做什么,而您显然不知道,那就够棘手了。您所做的是未定义的行为,您无法从输出中推断出任何内容。
标签: c++ class pointers sizeof member