对象的大小通过多重继承

时间:2016-12-27 15:06:23

标签: c++ inheritance

我有一个继承自A和B两个类的C类。这些类的私有成员名为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

1 个答案:

答案 0 :(得分:3)

  

据我所知,私人成员不会被继承。

但他们是。

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