通过多个继承的对象大小

Size of object through Multiple inheritance

本文关键字:对象 继承      更新时间:2023-10-16

我有一个C类C,该类别从两个A和B继承。这些类别具有名为I的私人成员,而我知道私人成员不会继承。当我打印出派生对象的大小时,我会得到12个大小,但我希望它是4的,因为成员不会继承。当大小显示为12而不是4个?

#include<iostream>
using namespace std;
class A
{
    private:
        int i;
    public:
        A():i(1){}
};

class B
{
    private:
        int i;
    public:
        B():i(2){}
};

class C : private B,private A
{
    int i;
    public:
    C():i(3){}
    public:
    void disp()
    {
        //cout<<A::i<<endl;
        cout <<"i = "<< i<<endl;
    }
};
int main()
{
    C c1;
    cout <<"sizeof c object = "<< sizeof(c1)<< endl;
    c1.disp();
    return 0;
}
output :
sizeof c object = 12
i = 3

,我知道私人成员不会继承。

但是它们是。

私人成员是派生类的一部分,但不是可访问。这解释了为什么您的派生类的大小为12。