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.
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
private: <datatype> value; public: <datatype> getterFunction() { return <datatype> this->value; }
Setter/Mutator-Funktion−
private: <datatype> value; public: void setterFunction(<datatype> _value) { this->value = _value; }
Beispiel
lautet:#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; }
The value we set is: 15
“ verwenden, um Namenskonflikte zu vermeiden. Grammatik
private: <returntype> function_name(params) {}; public: <returntype> another_function(params) { <datatype> var = this->function_name(arguments); }
Beispiel
lautet:#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; }
The value after setting and multiplying is: 150
“. Mal sehen, wie es funktioniert. Grammatik
class A{ private: ..... friend class B; }; class B{ //class body };
#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; }
The value of Test1 object is: 15
“ definiert. Grammatik
class A{ private: ..... friend <return_type> function_name(params); }; <return_type> function_name(params) { //function body }
#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; }
The value of Test1 object is: 55
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!