class A{
        virtual void f(){}
};

class B{
        virtual void f(){}
};

class C:public A,public B{
        //virtual void f(){}
};

多重继承情况下,看父类有没有虚函数。

sizeof(A) = 8

sizeof(B) = 8

sizeof(C) = 16

在我的64位机器上这个结果。也就是,保存了两个虚表。

class A{
        virtual void f(){}
};

class B{
};

class C:public A,public B{
};

接下来这种,sizeof(A) = 8, sizeof(B) = 1, sizezof(C) = 8。只保存了一个虚表。

 

posted on 2019-03-27 10:42  newbird2017  阅读(131)  评论(0编辑  收藏  举报