为了账号安全,请及时绑定邮箱和手机立即绑定

私人和受保护成员:C ++

私人和受保护成员:C ++

C++
慕勒3428872 2019-07-25 19:40:38
私人和受保护成员:C ++有人可以告诉我类private和protected成员之间的区别吗?我从最佳实践约定中了解到应该在类外部调用的变量和函数private- 但是看看我的MFC项目,MFC似乎更喜欢protected。有什么区别,我应该使用哪个?
查看完整描述

3 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

所有人都可以访问A类的公共成员。

A类的受保护成员不能在A代码之外访问,但可以从A派生的任何类的代码访问。

A类的私有成员不能在A代码之外访问,也不能从A派生的任何类的代码访问。

因此,最后,在protected或private之间进行选择会回答以下问题:您愿意对派生类的程序员有多少信任?

默认情况下,假设派生类不受信任,并使您的成员成为私有。如果您有充分的理由将母类的内部组件自由访问其派生类,那么您可以使它们受到保护。


查看完整回答
反对 回复 2019-07-25
?
温温酱

TA贡献1752条经验 获得超4个赞

可以从派生类访问受保护的成员。私人不能。

class Base {private: 
  int MyPrivateInt;protected: 
  int MyProtectedInt;public:
  int MyPublicInt;};class Derived : Base{public:
  int foo1()  { return MyPrivateInt;} // Won't compile!
  int foo2()  { return MyProtectedInt;} // OK  
  int foo3()  { return MyPublicInt;} // OK};‌‌class Unrelated {private:
  Base B;public:
  int foo1()  { return B.MyPrivateInt;} // Won't compile!
  int foo2()  { return B.MyProtectedInt;} // Won't compile
  int foo3()  { return B.MyPublicInt;} // OK};

就“最佳实践”而言,取决于。如果有人甚至可能想要从现有的类中获取新类并且需要访问内部成员,那么请将它们设为Protected,而不是Private。如果他们是私人的,你的班级可能很难轻易继承。


查看完整回答
反对 回复 2019-07-25
  • 3 回答
  • 0 关注
  • 449 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信