Heim > Backend-Entwicklung > C++ > Wie können C-Objekte derselben Klasse auf die privaten Mitgliedsvariablen des anderen zugreifen?

Wie können C-Objekte derselben Klasse auf die privaten Mitgliedsvariablen des anderen zugreifen?

Susan Sarandon
Freigeben: 2024-12-31 07:59:10
Original
401 Leute haben es durchsucht

How Can C   Objects of the Same Class Access Each Other's Private Member Variables?

Warum können Objekte derselben Klasse auf die privaten Daten anderer zugreifen?

In C können Objekte derselben Klasse auf die privaten Daten anderer zugreifen Daten, da die Zugriffskontrolle pro Klasse und nicht pro Objekt erfolgt. Dies bedeutet, dass private Daten nur für Objekte außerhalb der Klasse unzugänglich sind.

Betrachten Sie beispielsweise den folgenden Code:

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;
}
Nach dem Login kopieren

In diesem Code verfügt TrivialClass über eine private Mitgliedsvariable mData und eine öffentliche Memberfunktion getData, die einen Verweis auf mData zurückgibt. Wenn die Objekte a und b erstellt werden, können beide über die getData-Funktion auf die privaten Daten des anderen zugreifen.

Dies ist möglich, weil die Zugriffskontrolle von C auf den folgenden Regeln basiert:

  • Öffentliche Mitglieder sind von überall aus zugänglich.
  • Private Mitglieder sind nur innerhalb der Klasse zugänglich.
  • Geschützte Mitglieder sind es Zugriff innerhalb der Klasse und von abgeleiteten Klassen.

Da mData ein privates Mitglied ist, sollte es nur innerhalb der TrivialClass-Klasse zugänglich sein. Da die Zugriffskontrolle jedoch pro Klasse erfolgt, können Objekte derselben Klasse weiterhin auf die privaten Mitglieder der anderen Klasse zugreifen.

Dieses Verhalten ist nicht in allen Programmiersprachen vorhanden. Einige Sprachen, wie zum Beispiel Java, verfügen über eine echte Zugriffskontrolle pro Objekt, was bedeutet, dass Objekte derselben Klasse nicht auf die privaten Daten anderer zugreifen können.

Das obige ist der detaillierte Inhalt vonWie können C-Objekte derselben Klasse auf die privaten Mitgliedsvariablen des anderen zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage