Inhaltsverzeichnis
Verwenden Sie Getter- und Setter-Methoden, um auf Datenelemente zuzugreifen
Getter-/Accessor-Funktionen −
Beispiel
Ausgabe
Zugriff auf die Memberfunktion aus einer anderen Funktion heraus
Die gleiche Situation ist, wenn wir auf eine private Mitgliedsfunktion zugreifen. Wir müssen innerhalb der Klassenmember-Methode auf die gleiche Weise darauf zugreifen, wie wir auf die Datenmember zugreifen. Wir können den Zeiger „
Funktionen, die private Mitgliedsfunktionen aufrufen, sollten als öffentlich deklariert werden. Die öffentliche Funktion wird nur ausgeführt, wenn sie von einem Objekt dieser Klasse aufgerufen wird.
Verwenden Sie Freundesklassen
In C++ ist eine Freundklasse eine Klasse, die auf private und geschützte Mitglieder anderer Klassen zugreifen kann, die für andere Klassen nicht sichtbar sind. Um eine Klasse als Freund einer anderen Klasse zu deklarieren, verwenden Sie das Schlüsselwort „
Freundefunktionen nutzen
In C++ ähneln Friend-Funktionen Friend-Klassen. Hier können wir eine bestimmte Funktion, die kein Mitglied der Klasse ist, als „Freund“ deklarieren und sie erhält Zugriff auf die privaten Mitglieder der Klasse. Schauen wir uns die Syntax an, wie man eine Funktion als „
Fazit
Wenn wir auf private Datenmitglieder einer Klasse zugreifen, ist es besser, Zugriffs-/Getter- und Modifikator-/Setter-Funktionen zu verwenden. Dies ist die sicherste Möglichkeit, auf Datenelemente einer Klasse zuzugreifen. Denken Sie immer daran, dass Funktionen, die auf private Mitglieder zugreifen, als öffentlich deklariert werden sollten. Friend-Funktionen sind in anderen objektorientierten Sprachen nicht verfügbar, da dadurch die Eigenschaften der objektorientierten Kapselung nicht immer erhalten bleiben. Die Freundschaftsbeziehung ist asymmetrisch. Wenn Klasse A Klasse B als Freund deklariert, hat Klasse B Zugriff auf alle Mitglieder von A, A kann jedoch nicht auf alle privaten Mitglieder von B zugreifen.
Heim Backend-Entwicklung C++ C++-Programme greifen auf private Mitglieder der Klasse zu

C++-Programme greifen auf private Mitglieder der Klasse zu

Sep 08, 2023 am 08:17 AM
c 访问 私有成员

C++-Programme greifen auf private Mitglieder der Klasse zu

Auf private Mitglieder einer Klasse können nur Mitglieder der Klasse zugreifen. Dies geschieht, um objektorientierte Kapselungsprinzipien beizubehalten und sicherzustellen, dass Daten und die damit verbundenen Funktionen in einer Einheit gespeichert werden und nur von Mitgliedern der Klasse darauf zugegriffen werden kann. C++ verfügt über drei verschiedene Zugriffskontrollen, um die Sichtbarkeit von Mitgliedern einer Klasse festzulegen. Diese drei Zugriffskontrollzeichen sind −

  • Öffentlich − Wenn die Mitglieder einer Klasse öffentlich sichtbar sind, kann von jeder anderen Klasse aus auf diese Mitglieder zugegriffen werden.

  • Privat − Auf Klassenmitglieder mit privater Sichtbarkeit kann nur innerhalb der Klasse zugegriffen werden.

  • Geschützte − geschützte Klassenmitglieder können nur innerhalb der Klasse oder ihrer Unterklassen aufgerufen werden.

In diesem Artikel konzentrieren wir uns nur auf den Zugriff auf private Mitglieder einer Klasse.

Verwenden Sie Getter- und Setter-Methoden, um auf Datenelemente zuzugreifen

Getter- und Setter-Funktionen werden verwendet, um auf private Mitglieder einer Klasse zuzugreifen und diese zu ändern. Wie der Name schon sagt, gibt die Getter-Funktion das Datenelement zurück, während die Setter-Funktion zum „Setzen“ oder Ändern des Datenelements verwendet wird. Wir verwenden zwei Beispiele, um dieses Konzept besser zu verstehen, aber zuvor wird unten die grundlegende Syntax angegeben. Grammatik

Getter-/Accessor-Funktionen −

private:
   <datatype> value;
public:
   <datatype> getterFunction() {
     return <datatype> this->value;
   }
Nach dem Login kopieren

Setter/Mutator-Funktion−

private:
   <datatype> value;
public:
   void setterFunction(<datatype> _value) {
     this->value = _value;
   }
Nach dem Login kopieren
Die chinesische Übersetzung von

Beispiel

lautet:

Beispiel

#include <iostream>

using namespace std;

class Test{
   private:
      int value;
   public:
      //the getter function
      int getValue() {
         return this->value;
      }
      //the setter function
      void setValue(int _value) {
         this->value = _value;
      }
};

int main(){
   Test test;
   test.setValue(15);
   cout << "The value we set is: " << test.getValue() << endl;
   return 0;
}
Nach dem Login kopieren

Ausgabe

The value we set is: 15
Nach dem Login kopieren

Zugriff auf die Memberfunktion aus einer anderen Funktion heraus

Die gleiche Situation ist, wenn wir auf eine private Mitgliedsfunktion zugreifen. Wir müssen innerhalb der Klassenmember-Methode auf die gleiche Weise darauf zugreifen, wie wir auf die Datenmember zugreifen. Wir können den Zeiger „

this

“ verwenden, um Namenskonflikte zu vermeiden. Grammatik

private:
   <returntype> function_name(params) {};
public:
   <returntype> another_function(params) {
     <datatype> var = this->function_name(arguments);
   }
Nach dem Login kopieren

Funktionen, die private Mitgliedsfunktionen aufrufen, sollten als öffentlich deklariert werden. Die öffentliche Funktion wird nur ausgeführt, wenn sie von einem Objekt dieser Klasse aufgerufen wird.

Die chinesische Übersetzung von

Beispiel

lautet:

Beispiel

#include <iostream>

using namespace std;

class Test{
   private:
      int value;
      //multiplies the member value by 10
      void multiplyValue() {
         this->value = this->value * 10;
      }
   public:
      //the getvalue function calls the multiply value function
      int multiplyAndGetValue() {
         this->multiplyValue();
         return this->value;
      }
      //the setter function
      void setValue(int _value) {
         this->value = _value;
      }
};

int main(){
   Test test;
   test.setValue(15);
   cout << "The value after setting and multiplying is: " << test.multiplyAndGetValue() << endl;
   return 0;
}
Nach dem Login kopieren

Ausgabe

The value after setting and multiplying is: 150
Nach dem Login kopieren

Verwenden Sie Freundesklassen

In C++ ist eine Freundklasse eine Klasse, die auf private und geschützte Mitglieder anderer Klassen zugreifen kann, die für andere Klassen nicht sichtbar sind. Um eine Klasse als Freund einer anderen Klasse zu deklarieren, verwenden Sie das Schlüsselwort „

friend

“. Mal sehen, wie es funktioniert. Grammatik

class A{
   private:
     .....
   friend class B;
};

class B{
   //class body
};
Nach dem Login kopieren
Die chinesische Übersetzung von

Beispiel

lautet:

Beispiel

#include <iostream>

using namespace std;

class Test1{
   private:
      int value;
   public:
      Test1(int _value) {
         this->value = _value;
      }
      //we declare another class as a friend
      friend class Test2;
};

class Test2{
  public:
   //displays the value of the other class object
   void display(Test1 &t) {
      cout << "The value of Test1 object is: " << t.value;
   }
};

int main(){
   //creating two class objects of the two classes
   Test1 test1(15);
   Test2 test2;

   //calling the friend class function
   test2.display(test1);
   return 0;
}
Nach dem Login kopieren

Ausgabe

The value of Test1 object is: 15
Nach dem Login kopieren

Freundefunktionen nutzen

In C++ ähneln Friend-Funktionen Friend-Klassen. Hier können wir eine bestimmte Funktion, die kein Mitglied der Klasse ist, als „Freund“ deklarieren und sie erhält Zugriff auf die privaten Mitglieder der Klasse. Schauen wir uns die Syntax an, wie man eine Funktion als „

Freund

“ definiert. Grammatik

class A{
   private:
     .....
   friend <return_type> function_name(params);
};

<return_type> function_name(params) {
   //function body
}
Nach dem Login kopieren
Die chinesische Übersetzung von

Beispiel

lautet:

Beispiel

#include <iostream>

using namespace std;

class Test1{
   private:
      int value;
   public:
      Test1(int _value) {
         this->value = _value;
      }
      //we declare a friend function
      friend void display(Test1);
};

void display(Test1 t) {
   cout << "The value of Test1 object is: " << t.value;
}

int main(){
   //creating two class objects of the two classes
   Test1 test1(55);
   //calling the friend class function
   display(test1);
   return 0;
}
Nach dem Login kopieren

Ausgabe

The value of Test1 object is: 55
Nach dem Login kopieren

Fazit

Wenn wir auf private Datenmitglieder einer Klasse zugreifen, ist es besser, Zugriffs-/Getter- und Modifikator-/Setter-Funktionen zu verwenden. Dies ist die sicherste Möglichkeit, auf Datenelemente einer Klasse zuzugreifen. Denken Sie immer daran, dass Funktionen, die auf private Mitglieder zugreifen, als öffentlich deklariert werden sollten. Friend-Funktionen sind in anderen objektorientierten Sprachen nicht verfügbar, da dadurch die Eigenschaften der objektorientierten Kapselung nicht immer erhalten bleiben. Die Freundschaftsbeziehung ist asymmetrisch. Wenn Klasse A Klasse B als Freund deklariert, hat Klasse B Zugriff auf alle Mitglieder von A, A kann jedoch nicht auf alle privaten Mitglieder von B zugreifen.

Das obige ist der detaillierte Inhalt vonC++-Programme greifen auf private Mitglieder der Klasse zu. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was sind Konstanten in der C-Sprache? Können Sie ein Beispiel nennen? Was sind Konstanten in der C-Sprache? Können Sie ein Beispiel nennen? Aug 28, 2023 pm 10:45 PM

Eine Konstante wird auch als Variable bezeichnet. Sobald sie definiert ist, ändert sich ihr Wert während der Ausführung des Programms nicht. Daher können wir eine Variable als Konstante deklarieren, die auf einen festen Wert verweist. Es wird auch Text genannt. Konstanten müssen mit dem Schlüsselwort Const definiert werden. Syntax Die Syntax der in der Programmiersprache C verwendeten Konstanten ist wie folgt: consttypeVariableName; (oder) Verschiedene Arten von Konstanten Die verschiedenen Arten von Konstanten, die in der Programmiersprache C verwendet werden, sind wie folgt: Ganzzahlige Konstanten – Beispiel: 1,0 ,34, 4567 Gleitkommakonstanten – Beispiel: 0,0, 156,89, 23,456 Oktal- und Hexadezimalkonstanten – Beispiel: Hex: 0x2a, 0xaa.. Oktal

iOS 17: So steuern Sie, welche Apps auf Ihre Fotos zugreifen können iOS 17: So steuern Sie, welche Apps auf Ihre Fotos zugreifen können Sep 13, 2023 pm 09:09 PM

In iOS17 hat Apple mehr Kontrolle darüber, was Apps auf Fotos sehen können. Lesen Sie weiter, um zu erfahren, wie Sie den App-Zugriff pro App verwalten. In iOS können Sie mit der In-App-Fotoauswahl von Apple bestimmte Fotos mit der App teilen, während der Rest Ihrer Fotobibliothek privat bleibt. Apps müssen Zugriff auf Ihre gesamte Fotobibliothek anfordern, und Sie können Apps optional den folgenden Zugriff gewähren: Eingeschränkter Zugriff – Apps können nur Bilder sehen, die Sie auswählen können. Dies können Sie jederzeit in der App oder über Einstellungen &gt; Klicken Sie auf „Datenschutz und Sicherheit“ > „Fotos“, um ausgewählte Bilder anzuzeigen. Voller Zugriff – App kann Fotos anzeigen

VSCode und VS C++ IntelliSense funktionieren nicht oder rufen keine Bibliotheken auf VSCode und VS C++ IntelliSense funktionieren nicht oder rufen keine Bibliotheken auf Feb 29, 2024 pm 01:28 PM

VS Code und Visual Studio C++ IntelliSense können Bibliotheken möglicherweise nicht abrufen, insbesondere bei der Arbeit an großen Projekten. Wenn wir mit der Maus über #Include&lt;wx/wx.h&gt; fahren, wird die Fehlermeldung „Quelldatei 'string.h' kann nicht geöffnet werden“ angezeigt (abhängig von „wx/wx.h“) und manchmal reagiert die Funktion zur automatischen Vervollständigung nicht. In diesem Artikel erfahren Sie, was Sie tun können, wenn VSCode und VSC++ IntelliSense nicht funktionieren oder Bibliotheken nicht extrahieren. Warum funktioniert mein Intellisense nicht in C++? Bei der Arbeit mit großen Dateien kommt es manchmal zu IntelliSense

Wie greife ich in Java auf die JSON-Felder, Arrays und verschachtelten Objekte von JSONNode zu? Wie greife ich in Java auf die JSON-Felder, Arrays und verschachtelten Objekte von JSONNode zu? Aug 30, 2023 pm 11:05 PM

Ein JsonNode ist Jacksons JSON-Baummodell, das JSON in JsonNode-Instanzen einlesen und JsonNode in JSON schreiben kann. Wir können Jackson verwenden, um JSON in einen JsonNode einzulesen, indem wir eine ObjectMapper-Instanz erstellen und die Methode readValue() aufrufen. Mit der Methode get() der Klasse JsonNode können wir auf Felder, Arrays oder verschachtelte Objekte zugreifen. Wir können die Methode asText() verwenden, um eine gültige Zeichenfolgendarstellung zurückzugeben und den Wert des Knotens mithilfe der Methode asInt() der Klasse JsonNode in Javaint umzuwandeln. Im folgenden Beispiel können wir auf Json zugreifen

Beheben Sie den Xbox-Fehlercode 8C230002 Beheben Sie den Xbox-Fehlercode 8C230002 Feb 27, 2024 pm 03:55 PM

Können Sie aufgrund des Fehlercodes 8C230002 keine Inhalte auf Ihrer Xbox kaufen oder ansehen? Einige Benutzer erhalten diese Fehlermeldung immer wieder, wenn sie versuchen, Inhalte auf ihrer Konsole zu kaufen oder anzusehen. Leider liegt ein Problem mit dem Xbox-Dienst vor. Versuchen Sie es später erneut. Wenn Sie Hilfe zu diesem Problem benötigen, besuchen Sie www.xbox.com/errorhelp. Statuscode: 8C230002 Dieser Fehlercode wird normalerweise durch vorübergehende Server- oder Netzwerkprobleme verursacht. Es kann jedoch auch andere Gründe geben, beispielsweise die Datenschutzeinstellungen oder die Kindersicherung Ihres Kontos, die Sie möglicherweise daran hindern, bestimmte Inhalte zu kaufen oder anzusehen. Beheben Sie den Xbox-Fehlercode 8C230002, wenn Sie beim Versuch, Inhalte auf Ihrer Xbox-Konsole anzusehen oder zu kaufen, den Fehlercode 8C erhalten

Rekursives Programm zum Ermitteln minimaler und maximaler Elemente eines Arrays in C++ Rekursives Programm zum Ermitteln minimaler und maximaler Elemente eines Arrays in C++ Aug 31, 2023 pm 07:37 PM

Als Eingabe nehmen wir das Integer-Array Arr[]. Ziel ist es, mithilfe einer rekursiven Methode die größten und kleinsten Elemente in einem Array zu finden. Da wir Rekursion verwenden, durchlaufen wir das gesamte Array, bis wir Länge = 1 erreichen, und geben dann A[0] zurück, was den Basisfall bildet. Andernfalls wird das aktuelle Element mit dem aktuellen Minimal- oder Maximalwert verglichen und sein Wert für nachfolgende Elemente rekursiv aktualisiert. Schauen wir uns verschiedene Eingabe- und Ausgabeszenarien dafür an −Input −Arr={12,67,99,76,32};Output −Maximum value in the array: 99 Explanation &mi

Greifen Sie mit Python auf Metadaten verschiedener Audio- und Videodateien zu Greifen Sie mit Python auf Metadaten verschiedener Audio- und Videodateien zu Sep 05, 2023 am 11:41 AM

Mit Mutagen und dem eyeD3-Modul in Python können wir auf die Metadaten von Audiodateien zugreifen. Für Videometadaten können wir Filme und die OpenCV-Bibliothek in Python verwenden. Metadaten sind Daten, die Informationen über andere Daten bereitstellen, beispielsweise Audio- und Videodaten. Zu den Metadaten für Audio- und Videodateien gehören Dateiformat, Dateiauflösung, Dateigröße, Dauer, Bitrate usw. Durch den Zugriff auf diese Metadaten können wir Medien effizienter verwalten und die Metadaten analysieren, um nützliche Informationen zu erhalten. In diesem Artikel werfen wir einen Blick auf einige der von Python bereitgestellten Bibliotheken oder Module für den Zugriff auf Metadaten von Audio- und Videodateien. Auf Audio-Metadaten zugreifen Einige Bibliotheken für den Zugriff auf Audiodatei-Metadaten nutzen Mutagenese

So lösen Sie das Problem der Unzugänglichkeit, nachdem Tomcat das Kriegspaket bereitgestellt hat So lösen Sie das Problem der Unzugänglichkeit, nachdem Tomcat das Kriegspaket bereitgestellt hat Jan 13, 2024 pm 12:07 PM

Um das Problem zu lösen, dass Tomcat nach der Bereitstellung nicht erfolgreich auf das Kriegspaket zugreifen kann, sind bestimmte Codebeispiele erforderlich. Als weit verbreiteter Java-Webserver ermöglicht Tomcat Entwicklern, ihre eigenen entwickelten Webanwendungen zur Bereitstellung in Kriegsdateien zu packen. Manchmal kann es jedoch vorkommen, dass wir nach der Bereitstellung des Kriegspakets nicht erfolgreich darauf zugreifen können. Dies kann an einer falschen Konfiguration oder aus anderen Gründen liegen. In diesem Artikel stellen wir einige konkrete Codebeispiele bereit, die dieses Dilemma angehen. 1. Überprüfen Sie den Tomcat-Dienst

See all articles