使用sizeof获取类的大小

来源:互联网 发布:淘宝自动充值平台利润 编辑:程序博客网 时间:2024/06/06 18:53

一,一个空类的大小为1

class D{public:    void display(){}};int main(){    cout<<sizeof(D)<<endl;    return 0;}

那是被编译器插进去的一个char,使得这个class的不同对象在内存中配置独一无二的地址,即这个char用来标识不同的类对象。


二,一个类的大小只与非静态数据成员和虚函数有关,与其他的成员没有关系

class D{private:    static int a;    double d;public:    virtual void display(){}};
此时sizeof(D)为16,double占用8个字节,指向虚函数表的指针占用4个字节,再加上补全的4个字节,一共是占用16个字节。


三,在多重继承中,如果有n个基类都有虚函数,那么在派生类的对象中就有n个指向虚函数表的指针

class A{public:    virtual void func(){    }};class B{public:    virtual void func();};class C : public A, public B{};
此时sizeof(C)为8,说明在C对象中有2个指向虚函数表的指针。一个对象所拥有的指向虚函数表的指针的个数与对象所属的类所拥有的虚函数表的数目是相同的,也就是说一个类有n个虚函数表,那么这个类的对象就有n个指向虚函数表的指针。