读书人

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

发布时间: 2012-07-31 12:33:46 作者: rapoo

没有数据成员的类的大小是多少?
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


读书人网 >C++

热点推荐