private
和 protected
C++ 类中的成员有什么区别?
我从最佳实践约定中了解到,不应该在类外调用的变量和函数应该是 private
但看看我的 MFC 项目,MFC 似乎更喜欢 protected
。
有什么区别,我应该使用哪个?
原文由 Konrad 发布,翻译遵循 CC BY-SA 4.0 许可协议
C++ 类中的私有成员和受保护成员有什么区别?
其他答案已经说明:
有什么区别,我应该使用哪个?
C++ 核心指南 建议数据应该始终是私有的。我认为这是一个很好的建议,因为当您拥有可以访问受保护数据的派生类时,它会产生“数据意大利面条”。保护功能更有意义,但这取决于用例。
对于功能,您可以选择。对于数据,您应该将其设为私有并在需要时提供受保护的访问器函数。这可以更好地控制类数据。
原文由 artless noise 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
私有成员只能在定义它们的类中访问。
受保护的成员可以在定义它们的类和从该类继承的类中访问。
编辑:它们的类的朋友也可以访问两者,如果是受保护的成员,它们的派生类的朋友也可以访问它们。
编辑 2:在您的问题的上下文中使用任何有意义的东西。您应该尽可能将成员设为私有,以减少耦合并保护基类的实现,但如果这不可能,则使用受保护的成员。检查 C++ FAQ 以更好地理解该问题。 这个关于受保护变量的问题 也可能有所帮助。