关于对象的存储空间的问题
#include <iostream.h>
#include "stdafx.h"
class fu
{
public:
fu(){cout<<"fu\n";};
virtual ~fu(){cout<<"xigoufu\n";};
int a;
char b;
};
main(int argc, char* argv[])
{
fu obj;
cout <<"sizeof(obj.a):["<<sizeof(obj.a)<<"]"<<endl;
cout <<"sizeof(obj.b):["<<sizeof(obj.b)<<"]"<<endl;
cout <<"sizeof(fu): ["<<sizeof(fu) <<"]"<<endl;
cout <<"sizeof(obj):["<<sizeof(obj)<<"]"<<endl;
}
为什么我的输出:sizeof(obj.a):4
sizeof(obj.b):1
sizeof(fu) :12
sizeof(obj) :12
而我用quick watch看了一下,sizeof(obj.fu()) :0
sizeof(obj.~fu()) :0
sizeof(fu.fu()) :4
sizeof(fu.~fu()) :4
想知道:sizeof(obj) 为什么不等于sizeof(obj.a)+sizeof(obj.b)
sizeof(fu) 为什么不等于sizeof(fu.fu())+sizeof(fu.~fu())+sizeof(fu.a)+sizeof(fu.b)