空类,sizeof是多少

来源:百度知道 编辑:UC知道 时间:2024/06/17 15:42:09
我想知道为什么,我跑的结果也是1

>=1byte
理由:设想如果为0,则该类的两个对象实例该如何区分?岂不都在内存中的同一个地方?!
例如:class A;(是没有任何成员的空类)
则A a,b;
显然 &a != &b!但是,如果sizeof(A)等于0则无法分配内存来在运行时区分多个同类型的对象。
所以,编译器对这样的类的内存布局中缺省添加1个字节(或多个,一般小于等于机器的地址总线位数,依赖于编译器的具体实现)。

1Byte
vc6.0下面试过的

因为必须用1个byte存放不同对象的地址.使得这个空类的各个objects在内存中有不同的地址.
详情请看《深度探索C++对象模型》

记得有本书讲C++机巧方面的,中文名是叫<<C++对象模型>>罢,很有意思的本书,我记得你这个问题里面有讲的.

你对这方面感兴趣,不会是这一个问题的,建议你买本看看

空类就是1,即'\0'

同意"标苦运先"的说法,在Effective C++(或More Effective C++,具体哪个记不清楚了)中有介绍.