天天看点

sizeof(struct)及sizeof(class)

http://community.csdn.net/Expert/topic/4405/4405757.xml?temp=9.743899E-02

#param package(1)

struct a

{

    __int32 i;

    __int8 c[5];

    double* p;

    __int16 j;

};

printf("sizeof(struct a)");

这是多少?

------------------------

using namespace std;

class Base

{

public:

    Base() { cout<<"Base-ctor"<<endl; }

    ~Base() { cout<<"Base-dtor"<<endl; }

    virtual void f(int) { cout<<"Base::f(int)"<<endl; }

    virtual void f(double) {cout<<"Base::f(double)"<<endl; }

    virtual void g(int i = 10) {cout<<"Base::g()"<<i<<endl; }

};

这里sizeof(Base)的话又是多少?

------------------------------

answer:

第一个结构 是不对齐方式

大小= 4+5+4+2 = 15

第二个无成员但有vptr指针为4

如果无virtual 应该为1