C类的私有成员和受保护成员有什么区别?

新手上路,请多包涵

privateprotected C++ 类中的成员有什么区别?

我从最佳实践约定中了解到,不应该在类外调用的变量和函数应该是 private 但看看我的 MFC 项目,MFC 似乎更喜欢 protected

有什么区别,我应该使用哪个?

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

阅读 594
2 个回答

私有成员只能在定义它们的类中访问。

受保护的成员可以在定义它们的类和从该类继承的类中访问。

编辑:它们的类的朋友也可以访问两者,如果是受保护的成员,它们的派生类的朋友也可以访问它们。

编辑 2:在您的问题的上下文中使用任何有意义的东西。您应该尽可能将成员设为私有,以减少耦合并保护基类的实现,但如果这不可能,则使用受保护的成员。检查 C++ FAQ 以更好地理解该问题。 这个关于受保护变量的问题 也可能有所帮助。

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

C++ 类中的私有成员和受保护成员有什么区别?

其他答案已经说明:

  • 公共 - 所有人都可以访问。
  • protected - 派生类(和朋友)可以访问。
  • 私人 - 受限。

有什么区别,我应该使用哪个?

C++ 核心指南 建议数据应该始终是私有的。我认为这是一个很好的建议,因为当您拥有可以访问受保护数据的派生类时,它会产生“数据意大利面条”。保护功能更有意义,但这取决于用例。

对于功能,您可以选择。对于数据,您应该将其设为私有并在需要时提供受保护的访问器函数。这可以更好地控制类数据。

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

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