Heim >Backend-Entwicklung >C++ >Warum kann ein Objekt auf die privaten Daten eines anderen in derselben C-Klasse zugreifen?

Warum kann ein Objekt auf die privaten Daten eines anderen in derselben C-Klasse zugreifen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-10 01:17:17950Durchsuche

Why Can One Object Access Another's Private Data in the Same C   Class?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn