这是我的c ++程序,der
继承自base
。
#include <iostream.h>
#include <conio.h>
class base
{
int x;
public:
int y;
void set(int a,int b)
{
x=a;
y=b;
}
void show()
{
cout<<"X ="<<x;
}
};
class der:public base
{
int i;
};
void main()
{
clrscr();
int p,q;
base o1;
der o2;
o2.y=10;
o2.x=20;
q=sizeof(o2);
p=sizeof(o1);
cout<<"Size of Abc "<<p;
cout<<"\nSize of Der "<<q;
getch();
}
因为我们知道私有成员不是继承的,但是当我发现o1
的大小时,它会给出4个(显然有2个int成员),但是o2
的大小是6,但是private
的大小应该是4 {1}}未被继承。请有人帮忙。
因为我能够访问基础的公共成员fxns,这又可以访问私有数据成员,所以我们可以说私人成员也可以在课外访问
答案 0 :(得分:8)
“我们知道私人会员不是固执的”
这根本不是真的。私有成员是继承的,但派生类无法访问它们。所以它们的存储仍然存在 - 否则基类也无法使用它自己的成员(回想一下派生类对象“是一个”基类对象,只是添加了更多的东西)。
答案 1 :(得分:0)
所有非静态成员都会继承到派生类。
并且派生类可以访问所有成员。
可以访问{p>Public
和Protected
个成员directly
,Private
个成员可以访问
在继承的成员indirectly
或functions
的帮助下访问pointer
。