读书人

空对象的大小,该怎么处理

发布时间: 2012-02-21 16:26:23 作者: rapoo

空对象的大小
#include <iostream>
using namespace std;

class foo
{};

int main()
{
foo f;
cout < < sizeof(f);
}

程序运行输出“1”!
为什么呢?是什么东西占用了一个字节呢?

[解决办法]
编译器插入的,有大小才有内容,有内容才有地址,有地址才能在不同的对象之间做出区分。
如果没有这1byte,怎么区分两个空对象是两个不同的对象呢?
[解决办法]
详见 <Inside C++ Object>
[解决办法]
C++规定!
去看 <深度探索C++对象模型>
[解决办法]
这是编译器填充进去的,你想想,如果是0会出现什么情况?
foo fooArray[10];//10个元素的地址将是相同的
这是为了保证每个对象都有自己独立的空间。
[解决办法]
否则连续对象
占相同的地址无法区分
[解决办法]
什么都没插入,就是白白空着一个字节。
[解决办法]
1

读书人网 >C++

热点推荐