Heim >Backend-Entwicklung >C++ >Warum kann ein Objekt auf die privaten Daten eines anderen in derselben C-Klasse zugreifen?
Warum können Objekte derselben Klasse auf die privaten Daten anderer zugreifen?
Bedenken Sie den folgenden Codeausschnitt:
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; };
Seltsamerweise kann getData() auf das private Mitglied mData eines anderen TrivialClass-Objekts zugreifen. Warum ist das erlaubt?
Zugriffskontrolle pro Klasse
In C wird die Zugriffskontrolle auf einer Basis pro Klasse und nicht pro Objekt implementiert. Dies bedeutet, dass alle Objekte derselben Klasse denselben Zugriff auf die privaten Mitglieder der Klasse haben, unabhängig von ihrem Status oder anderen Objekten, mit denen sie möglicherweise interagieren.
Implementierung zur Kompilierungszeit
Die C-Zugriffskontrolle wird zur Kompilierzeit erzwungen, sodass es unpraktisch ist, eine Kontrolle pro Objekt zu implementieren. Die Kontrolle pro Klasse kann jedoch während der Kompilierung effizient und zuverlässig implementiert werden.
Geschützter Zugriff
Während die Zugriffskontrolle normalerweise pro Klasse erfolgt, bietet der geschützte Zugriffsspezifizierer dies eine rudimentäre Form der objektbezogenen Kontrolle. Allerdings ist diese Kontrolle im Vergleich zu dem, was mit einer echten Zugriffskontrolle pro Objekt möglich wäre, begrenzt.
Zusammenfassend lässt sich sagen, dass Objekte derselben Klasse auf die privaten Daten anderer zugreifen können, da der Zugriffskontrollmechanismus von C auf a operiert pro Klasse. Diese Designentscheidung ermöglicht eine effiziente und zuverlässige Durchsetzung der Zugriffskontrolle während der Kompilierung.
Das obige ist der detaillierte Inhalt vonWarum kann ein Objekt auf die privaten Daten eines anderen in derselben C-Klasse zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!