我有一个继承自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
答案 0 :(得分:3)
据我所知,私人成员不会被继承。
但他们是。
私有成员是派生类的一部分,但它不是可访问的。这解释了为什么派生类的大小为12。