C++ 通过多重继承的对象大小
我有一个C类,它继承了两个类a和B。这些类有一个名为I的私有成员,据我所知,私有成员不会被继承。当我打印出派生对象的大小时,我得到的大小是12,但我希望它是4,因为成员不会被继承。为什么大小显示为12而不是4C++ 通过多重继承的对象大小,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:
#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
继承的简单误解。