-3

这是我的 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。任何人都可以在这里帮忙。

还有一件事,因为我能够公开基础的成员 fxns,而后者又可以访问私有数据成员,所以我们可以说私有成员也可以在类外访问

4

2 回答 2

8

“因为我们知道私人成员不会被继承”

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

于 2013-07-06T02:27:01.307 回答
0

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

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

Public并且Protected可以访问成员directly,并且可以在继承成员的帮助下或通过访问成员。 Privateindirectlyfunctionspointer

于 2014-01-01T17:26:05.667 回答