Ich lerne grundlegende Konzepte von OOP in C ++ und stieß auf ein logisches Problem.
%Vor% Ich wollte im obigen Code wissen, warum ich auf x.i
[Zeile 19] zugreifen kann, da es ein privates Mitglied in dem anderen Objekt ist. Ist der private Bereich nicht auf dieselbe Klasse beschränkt, selbst wenn das Objekt Wird als Parameter übergeben?
private
in C ++ bedeutet privat für die Klasse , nicht privat für das Objekt . Beide Interpretationen sind möglich, tatsächlich haben einige Sprachen die andere gewählt. Aber die meisten Sprachen sind in diesem Fall wie C ++ und erlauben Objekten derselben Klasse, auf die privaten Mitglieder einer anderen Instanz zuzugreifen.
Eine private Eigenschaft oder Methode einer Klasse bedeutet, dass sie nicht direkt von außerhalb des Klassenbereichs zugänglich ist. Dazu werden öffentliche Methoden in einer Klasse definiert, über die wir auf den Wert von privaten Mitgliedern zugreifen und sie bearbeiten können.
Im obigen Beispiel greifen Sie nicht direkt auf 'i'
von dem Objekt zu, sondern Sie manipulieren es mit einer öffentlichen Methode.
Denken Sie so: Sie haben ein Bankkonto und Ihr Geld in der Bank ist ein privates Mitglied. Sie können nicht einfach direkt zur Bank gehen und Ihr Geld selbst übernehmen. Kassierer in der Bank ist wie eine öffentliche Methode, die auf das Privateigentum zugreifen kann, also Ihr Geld, und Sie können Ihr Geld durch Kassierer manipulieren.
cpy(A x)
ist ein Mitglied der Klasse und kann auf private
Felder und Methoden zugreifen.
Das Schlüsselwort private
begrenzt die Intakte von anderen Klassen (Objekten), um auf die Felder zuzugreifen. Jeder Code, der zu einer Klasse gehört, kann auf seine eigenen privaten Mitglieder (Felder oder Methoden) zugreifen.
Eine Klasse kann auf ihre eigenen privaten Datenelemente zugreifen.
Dies bedeutet auch, dass Sie, wenn Sie Funktionen haben, die sich mit zwei oder mehr Instanzen ( this
und etwas als Parameter übergeben) befassen, auf die privaten (und öffentlichen) Variablen / Methoden des Objekts zugreifen können / p>