关于c ++中类派生的问题?

jac*_*k22 0 c++ inheritance class

我想知道关于c ++中类派生的一些事情,所以我有超类x和继承类y,我这样做了

class x{
    public:a;
    private:b;
    protected:c;
}    
class y:public x{
    public:d;
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,y如何访问a,b和c以及我的意思(公共,受保护,私有)

第二种情况:

class x{
    public:a;
    private:b;
    protected:c;
}    
class y:private x{
    public:d;
}
Run Code Online (Sandbox Code Playgroud)

同样的问题?

第三种情况:

class x{
    public:a;
    private:b;
    protected:c;
}    
class y:protected x{
    public:d;
}
Run Code Online (Sandbox Code Playgroud)

同样的问题呢?

抱歉,我想我写了太多的再见

Ste*_*hen 5

  1. 在所有形式的继承中:

    • y可以查看它的基类(x)并查看publicprotected.
    • 衍生类y可以看到它publicprotected成员.
    • 用户y可以看到其public成员.
    • 没有人能看到别人的private,除非他们是friend.
  2. 在公共继承中:

    • 用户y可以查看x和查看public.
  3. 在受保护的继承中:
    • 两个publicprotected的部分x成为protectedy
    • 衍生类y可以看到它们.
    • 用户y无法看到它们.
  4. 私有继承:
    • 两个publicprotected的部分x成为privatey:
    • 衍生出来的懒人y看不到它们.
    • 用户y无法看到它们.
    • 私有继承与组合(私有数据成员)基本相同.

这个C++ FAQ提供了有关私有和受保护继承的良好信息.