sizeof的问题
class test
{
public:
test();
virtual ~test();
virtual void get_a_c();
private:
int a;
char c;
};
class derived_test:public test
{
private:
double d;
};
sizeof(test)和sizeof(derived_test)分别是多少?为什么?
[解决办法]
gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5.1)
基类:一个pVtr, 一个int 一个 char 然后四字节对齐 4+4+4 =12;
子类 :基类 + double = 12+8 = 20;
[解决办法]
推荐一下这篇博客,相当不错:http://blog.csdn.net/21aspnet/article/details/6729724
看完之后我可以保证你不会疑惑字节对齐了。
其次,你的类中有虚函数,这要求维护一个虚表,找点资料从头复习一下吧。
[解决办法]
不好意思说错了,应该是"类的sizeof必须是所有成员变量的sizeof的整数倍"
[解决办法]
你说的是默认原则,如果指定大小的话就不一样了。用#pragma pack(4)指定4字节补齐,输出的就是20。