在C++中,public、private和protected继承有什么区别?

17 浏览
0 Comments

在C++中,public、private和protected继承有什么区别?

在C ++中,publicprivateprotected继承有什么区别?

我找到的所有问题都涉及具体情况。

admin 更改状态以发布 2023年5月24日
0
0 Comments

为了回答这个问题,我想先用自己的话描述成员访问器。如果你已经知道了,就跳到“下一步:”的标题。

我知道有三个访问器:publicprotectedprivate

设:

class Base {
    public:
        int publicMember;
    protected:
        int protectedMember;
    private:
        int privateMember;
};

  • 所有知道 Base 的人都知道 Base 包含 publicMember
  • 只有子类(以及子类的子类)知道 Base 包含 protectedMember
  • 除了 Base 以外,没有人知道 privateMember

通过“知道”,我是指“认识到其存在,并因此能够访问”

下一步:

相同的情况也发生在公共的、私有的和受保护的继承中。让我们考虑一个类 Base 和一个继承自 Base 的类 Child

  • 如果继承是 public 的,所有知道 BaseChild 的人都知道 Child 继承自 Base
  • 如果继承是 protected 的,只有 Child 及其子类知道它们继承自 Base
  • 如果继承是 private 的,除了 Child 以外,没有人知道继承关系。
0
0 Comments

class A 
{
    public:
       int x;
    protected:
       int y;
    private:
       int z;
};
class B : public A
{
    // x is public
    // y is protected
    // z is not accessible from B
};
class C : protected A
{
    // x is protected
    // y is protected
    // z is not accessible from C
};
class D : private A    // 'private' is default for classes
{
    // x is private
    // y is private
    // z is not accessible from D
};

重要提示:B类、C类和D类都包含变量x、y和z。这只是一个访问问题。

关于使用protected和private继承,您可以在这里阅读。

0