- 论坛徽章:
- 0
|
10可用积分
(1)用gcc编译出来的空对象大小是1个字节,这1个字节的占位符号有什么实际的意义吗? 我上网搜了一下,似乎其他的编译器有的生成的控对象有4个字节的,不一定都相同。这个1字节浪费了?
(2) 一个具有虚函数表的对象,为什么无论有多少个虚函数,size都是只增加了4?
===================================
下面这样一小段代码
#include <cstdlib>
#include <cstdio>
using namespace std;
class c1{
public:
c1(){}
~c1(){}
};
struct c2{
};
class B{
int x;
virtual void f(){} ----->如果B类没有g函数和h函数,B的大小是8,有了g和h,B的大小还是8!!!!!!!!!!!!!!!!!!
virtual void g(){}
virtual void h(){}
};
int main(int argc, char *argv[])
{
c1 j;
printf("sizeof j=%d\n",sizeof(j));
c2 k;
printf("sizeof k=%d\n",sizeof(k));
printf("sizeof B=%d\n",sizeof(B));
B b1;
printf("sizeof b1=%d\n",sizeof(b1));
}
输出是
ctor
sizeof j=1
sizeof k=1
sizeof B=8
sizeof b1=8
Press any key to continue . . .
10分求上面两个问题的答案! 谢谢!
[ 本帖最后由 jeanlove 于 2009-2-1 17:17 编辑 ] |
|