C 中公共、私有和受保护的继承有什么区别?

新手上路,请多包涵

publicprivateprotected C++ 继承有什么区别?

我在 SO 上发现的所有问题都涉及特定案例。

原文由 user106599 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 768
2 个回答

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

我知道三个访问器: publicprotectedprivate

让:

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

  • 一切都知道 Base 也知道 Base 包含 publicMember
  • 只有孩子(和他们的孩子)知道 Base 包含 protectedMember
  • 除了 Base 没有人知道 privateMember

“知道”,我的意思是“承认存在,因此能够访问”。

下一个:

公共、私有和受保护的继承也是如此。让我们考虑一个类 Base 和一个类 Child 继承自 Base

  • If the inheritance is public , everything that is aware of Base and Child is also aware that Child inherits from Base .
  • 如果继承是 protected ,则只有 Child 及其子级知道他们继承自 Base
  • 如果继承是 private ,那么除了 Child 之外没有人知道继承。

原文由 Anzurio 发布,翻译遵循 CC BY-SA 3.0 许可协议

我尝试使用下面的图片来解释继承。

主要要点是父类的私有成员永远不能从派生/子类直接访问,但您可以使用父类的成员函数来访问父类的私有成员。私有变量始终存在于派生类中,但派生类无法访问它。就像他们的一样,但你不能用自己的眼睛看到,但如果你问家长班的某个人,那么他可以向你描述。 继承映射 cpp

原文由 shubhcodegate 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题