先摘录cppreference网站(C++参考手册)的一段描述:
私有成员访问: 私有成员组成类的实现,以及针对类的其他成员的私有接口。类的私有成员仅对类的成员和友元可访问,无关乎成员在相同还是不同实例:
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++黑魔法-无限制访问私有属性》,介绍突破私有属性的访问的限制。