Objektorientierte Programmierlogik

8

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?

    
deXter 03.06.2012, 16:51
quelle

6 Antworten

13

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.

    
Konrad Rudolph 03.06.2012, 17:00
quelle
5

Die Variablen x und y sind zwei Instanzen derselben Klasse. Sie sind verschiedene Objekte , aber sie gehören zu der selben Klasse . Deshalb ist es möglich, über die Mitgliederfunktion auf das private Mitglied zuzugreifen.

    
buc 03.06.2012 16:55
quelle
2

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.

    
alok kumar 20.05.2017 10:09
quelle
0

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.

    
m0skit0 03.06.2012 16:53
quelle
0

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>     

Raekye 03.06.2012 16:53
quelle
0
  

Ist der private Bereich nicht auf dieselbe Klasse beschränkt, selbst wenn das Objekt als Parameter übergeben wird?

Ja, das ist passiert. x greift auf das private Mitglied i in derselben Klasse zu, d. h. in der Klasse A .

    
gxyd 14.10.2016 11:04
quelle

Tags und Links