私有成员也可在外部被访问

理论支持

  先摘录cppreference网站(C++参考手册)的一段描述:

私有成员访问: 私有成员组成类的实现,以及针对类的其他成员的私有接口。类的私有成员仅对类的成员和友元可访问,无关乎成员在相同还是不同实例

代码语言:javascript
复制
class S {
 private:
    int n; // S::n 私有
 public:
    S(const S& other) : n(other.n) {} // other.n 可于 S::S 访问
};

  上面的代码中other访问了私有成员n,但不会编译错误。

  根据文档介绍,如果是访问同类的私有成员,那么该类私有成员就可以被直接访问。

  那么我们是否就有理由去认为C++的访问权限(public,protected,private)是基于而不是对象实例

引用: http://zh.cppreference.com/w/cpp/language/access

延伸阅读

  此外我们还可以看看这篇文章《C/C++黑魔法-无限制访问私有属性》,介绍突破私有属性的访问的限制。