为什么同一个类的对象可以访问彼此的私有数据?
在 C 中,同一类的对象可以访问彼此的私有数据数据,因为访问控制是基于每个类而不是每个对象进行操作的。这意味着私有数据只能被类外部的对象访问。
例如,考虑以下代码:
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; }; int main() { TrivialClass a("fish"); TrivialClass b("heads"); std::cout << "b via a = " << a.getData(b) << std::endl; return 0; }
在此代码中,TrivialClass 有一个私有成员变量 mData 和返回对 mData 的引用的公共成员函数 getData。当对象 a 和 b 创建后,它们都可以通过 getData 函数访问彼此的私有数据。
这是可能的,因为 C 的访问控制基于以下规则:
由于 mData 是私有成员,因此只能从 TrivialClass 类内部访问它。但是,由于访问控制是按类进行的,因此同一类的对象仍然可以访问彼此的私有成员。
并非所有编程语言都存在这种行为。某些语言(例如 Java)具有真正的每对象访问控制,这意味着同一类的对象不能访问彼此的私有数据。
以上是同一类的C对象如何访问彼此的私有成员变量?的详细内容。更多信息请关注PHP中文网其他相关文章!