为什么私有成员可以从派生类访问(使用基类的成员fxns)

时间:2013-07-06 02:23:42

标签: c++ c++11

这是我的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,这又可以访问私有数据成员,所以我们可以说私人成员也可以在课外访问

2 个答案:

答案 0 :(得分:8)

  

“我们知道私人会员不是固执的”

这根本不是真的。私有成员是继承的,但派生类无法访问它们。所以它们的存储仍然存在 - 否则基类也无法使用它自己的成员(回想一下派生类对象“是一个”基类对象,只是添加了更多的东西)。

答案 1 :(得分:0)

所有非静态成员都会继承到派生类。

并且派生类可以访问所有成员。

可以访问{p> PublicProtected个成员directlyPrivate个成员可以访问 在继承的成员indirectlyfunctions的帮助下访问pointer