首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-02-21 
空对象的大小#includeiostreamusingnamespacestdclassfoo{}intmain(){foofcout sizeof(f)}程序运

空对象的大小
#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

热点排行