w**********y 发帖数: 1691 | 1 ////////////////////////////
class A{ }; A a;
那么 sizeof(a) is 1;
class X{
void doNothing(){}
char a;
};
sizeof(x) 咋还是1,不是 1+1 =2 呢?
////////////////////////////
class Y{
virtual void doNothing(){}
};
sizeof(y) is 4..这个应该是指向virtual table的地址大小吧?
class Y{
virtual void doNothing(){}
virtual void doNothing2(){}
char a;
};
为啥是8不是4+1=5啊? 而且再添加一个member: char b..还是8..
如果换成char* b就成了12...
如果换成char a[2],结果是8
如果换成char a[10],结果是16
非常不理解.. |
j*****4 发帖数: 292 | 2 空类大小是1是因为编译器自己加了个char以区别两个空类,当有了别的data成员这个
char
就没了。其他的问题是字节补齐。关于这些建议看Inside C++ Object Model
【在 w**********y 的大作中提到】 : //////////////////////////// : class A{ }; A a; : 那么 sizeof(a) is 1; : class X{ : void doNothing(){} : char a; : }; : sizeof(x) 咋还是1,不是 1+1 =2 呢? : //////////////////////////// : class Y{
|
y****1 发帖数: 26 | 3 class X{
void doNothing(){}
char a;
};
sizeof(x) 咋还是1,不是 1+1 =2 呢?
应该是成员函数不占空间 |
t*****j 发帖数: 1105 | 4 nod, 函数不占空间.
【在 y****1 的大作中提到】 : class X{ : void doNothing(){} : char a; : }; : sizeof(x) 咋还是1,不是 1+1 =2 呢? : 应该是成员函数不占空间
|
w**********y 发帖数: 1691 | 5 多谢回复..我去放狗搜一下字节补齐..
【在 j*****4 的大作中提到】 : 空类大小是1是因为编译器自己加了个char以区别两个空类,当有了别的data成员这个 : char : 就没了。其他的问题是字节补齐。关于这些建议看Inside C++ Object Model
|
w**********y 发帖数: 1691 | |