在C++中继承私有成员

shr*_*sva 15 c++ inheritance

假设一个类有私有数据成员,但是setter和getter在公共范围内.如果从此类继承,您仍然可以调用这些setter和getter - 允许访问基类中的私有数据成员.这怎么可能,因为提到派生类不能继承私有数据成员

Avi*_*Avi 27

派生类不会继承对私有数据成员的访问权限.但是,它确实继承了一个完整的父对象,该对象包含该类声明的任何私有成员.

  • @ user265260:这可能适用于*your*platform,但它永远不需要**才能工作.永远. (5认同)
  • 是的,您可以使用"this"以一种hackish,非便携的方式操纵私有数据并相应地进行抵消. (2认同)

JRL*_*JRL 8

这取决于继承类型.如果您私下继承,则派生类无权访问Base的私有成员.

Access                      public     protected    private
-----------------------------------------------------------
members of the same class      yes           yes        yes
members of derived classes     yes           yes         no
not members                    yes            no         no
Run Code Online (Sandbox Code Playgroud)

  • 我认为这个答案可能具有误导性或至少是不准确的。@JRL 请尽量让它更清楚。 (2认同)