C++ 通过多重继承的对象大小

C++ 通过多重继承的对象大小,c++,inheritance,C++,Inheritance,我有一个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:

我有一个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
#包括
使用名称空间std;
甲级
{
私人:
int i;
公众:
A():i(1){}
};
B类
{
私人:
int i;
公众:
B():i(2){}
};
C类:B类、A类
{
int i;
公众:
C():i(3){}
公众:
void disp()
{
//库特
据我所知,私人成员不会被继承

但事实确实如此


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

私有成员是继承的。您只是无法访问它们的名称。私有成员也是继承的。但是,如果没有父类的方法,则无法访问它们。我投票关闭此问题,因为我这是基于对
private
继承的简单误解。