为什么同一类的对象可以访问彼此的私有数据?
考虑以下代码片段:
class TrivialClass { public: TrivialClass(const std::string& data) : mData(data) {}; const std::string& getData(const TrivialClass& rhs) const { return rhs.mData; }; private: std::string mData; };
奇怪的是,getData()可以访问另一个TrivialClass对象的私有成员mData。为什么允许这样做?
每类访问控制
在 C 中,访问控制是在每个类的基础上实现的,而不是在每个对象的基础上实现的。这意味着同一类的所有对象都具有对该类的私有成员的相同访问权限,无论其状态或它们可能与之交互的任何其他对象如何。
编译时实现
C 访问控制是在编译时强制执行的,这使得实现每个对象的控制变得不切实际。然而,每类控制可以在编译期间高效可靠地实现。
受保护的访问
虽然访问控制通常是针对每个类的,但受保护的访问说明符提供每个对象控制的基本形式。然而,与真正的每对象访问控制相比,这种控制是有限的。
总之,同一类的对象可以访问彼此的私有数据,因为 C 的访问控制机制在每个班级的基础上。这种设计决策可以在编译过程中实现高效、可靠的访问控制实施。
以上是为什么同一个C类中一个对象可以访问另一个对象的私有数据?的详细内容。更多信息请关注PHP中文网其他相关文章!