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

没数据成员的类的大小是多少

2012-07-31 
没有数据成员的类的大小是多少?class CTest{public:void func1(){coutfunc1endl}}class C

没有数据成员的类的大小是多少?
class CTest
{
public:
  void func1()
  {
  cout<<"====func1===="<<endl;
  }
};

class CC
{
public:
  virtual void func1()
  {
  cout<<"====func1===="<<endl;
  }
};
 有如下疑问:
1.sizeof( CC )大小是4,那是因为有虚函数指针
2.但是sizeof( Ctest ) 结果是1,我想问那个1是谁的大小? 我用的是g++编译器

[解决办法]

探讨

引用:

如果sizeof(Ctest)是0的话
那么
Ctest test1 地址在0x00000010处
Ctest test2 地址也依然在0x00000010 处
你如何区分test1和test2呢?


就是说那个1是用来区分这个类的对象的?

又有如下两个疑问:
1.如果那1个字节是用来区分对象的,那这样就说明一个类产生的对象的个数是有限……

[解决办法]
一)
class CBase 

}; 
sizeof(CBase)=1;

为什么空的什么都没有是1呢?
c++要求每个实例在内存中都有独一无二的地址。//注意这句话!!!!!!!!!!
空类也会被实例化,所以编译器会给空类隐含的添加一个字节,这样空类实例化之后就有了独一无二的地址了。所以空类的sizeof为1。


看下这篇文章
http://www.cnblogs.com/pipicfan/archive/2012/06/20/2556213.html


热点排行