© whiteMocca/Shutterstock.com

In der Programmierwelt gibt es viele Sprachen, die verwendet werden können. Viele davon sind als objektorientierte Programmiersprachen bekannt, die sich darauf konzentrieren, Programme um Objekte herum und wie sie miteinander interagieren, zu entwerfen.

Zu diesem Zweck werden die Eigenschaften von Objekten durch Klassen definiert und dazu verwendet, Daten sowie Code für die Bearbeitung dieser Daten zu enthalten.

A Ein beliebtes Beispiel für eine objektorientierte Sprache ist C++, und ein Großteil seiner Verwendung umfasst die Friend-Funktion und die Friend-Klassen. In diesem Artikel werden wir uns damit befassen, was eine Friend-Funktion und eine Friend-Klasse sind und wie sie mit C++ verwendet werden.

Was ist die Friend-Funktion und-Klasse?

Das Verstecken oder Einkapseln von Daten ist ein Schlüsselprinzip der objektorientierten Programmierung, normalerweise um eine benutzerfreundlichere Schnittstelle für die Interaktion mit Funktionen bereitzustellen oder den Zugriff auf bestimmte Codeblöcke zu beschränken. Manchmal möchten Sie jedoch möglicherweise, dass auf Code innerhalb einer bestimmten Klasse von einer Funktion außerhalb dieser Klasse zugegriffen wird.

Hier kommen das Friend-Keyword und die Friend-Funktion ins Spiel. Eine Friend-Funktion kann auf geschützte und private Daten zugreifen und kann mit dem Friend-Schlüsselwort deklariert werden. Als solches kann die Friend-Funktion verwendet werden, um Objekte einer oder mehrerer Klassen zu bearbeiten.

Es ist erwähnenswert, dass eine Friend-Funktion entweder eine Mitgliedsfunktion (einer bestimmten Klasse zugeordnet) oder eine globale Funktion (außerhalb einer Klasse definiert) sein kann.

Friend-Funktionen sind normale externe Funktionen, die besondere Zugriffsrechte erhalten.

©gonin/Shutterstock.com

Eine Freundesklasse funktioniert auf ähnliche Weise, aber da die gesamte Klasse ein „Freund“ einer anderen Klasse ist, haben alle Mitgliedsfunktionen der Freundesklasse Zugriff auf alle Mitglieder der anderen Klasse.

Mit anderen Worten, eine Friend-Funktion wird als Friend einer bestimmten Klasse deklariert, während eine Friend-Klasse innerhalb der Klasse definiert wird, mit der sie befreundet sein soll.

How to Verwenden Sie die Friend-Funktion

Da wir nun besprochen haben, was Friend-Funktionen und-Klassen sind, ist es an der Zeit, sich ein Beispiel anzusehen, wie die Friend-Funktion implementiert werden kann:

class MyClass { private: int X; öffentlich: Freund void myFriendFunction(MyClass& obj) { obj.x=10; } }

Hier haben wir die Funktion „myFriendFunction“ als Freund der Klasse „MyClass“ definiert. Als solches wird die Funktion innerhalb der Klassendefinition deklariert und kann auf das private Mitglied dieser Klasse „x“ zugreifen.

Wie man eine globale Friend-Funktion verwendet

Wenn wir wollen die Friend-Funktion als globale Funktion deklarieren, müssen wir sie außerhalb der Klassendefinition definieren. Dies kann sehr ähnlich wie im vorherigen Beispiel erfolgen:

class MyClass { private: int x; öffentlich: Freund void my GlobalFriendFunction(MyClass& obj); }; void myGlobalFriendFunction(MyClass& obj) { obj.x=10; }

Der Code ist im Wesentlichen derselbe, außer dass die Friend-Funktion außerhalb der Klasse definiert ist. Daher kann diese Friend-Funktion potentiell ein Friend jeder Klasse sein, da sie nicht innerhalb einer Klasse definiert wurde.

Wie man eine Funktion als Friend mehrerer Klassen deklariert

Sie müssen nicht nur damit aufhören, eine Funktion klassenfreundlich zu gestalten. Funktionen können mit mehreren Klassen befreundet sein. Sehen Sie unten, wie das geht:

class MyClass1; Klasse MyClass2 { private: int y; öffentlich: Freund void myFriendFunction(MyClass1&, MyClass2&); }; Klasse MyClass1 { privat: int x; öffentlich: Freund void myFriendFunction(MyClass1&, MyClass2&); }; void myFriendFunction(MyClass1& obj1, MyClass2& obj2) { obj1.x=10; obj2.y=20; }

Hier haben wir zwei Klassen definiert, „MyClass1“ und „MyClass2“, sowie die globale Funktion „myFriendFunction“. Die Friend-Funktion wird in beiden Klassendefinitionen deklariert und kann daher die privaten Member dieser beiden Objekte ändern. Nämlich Mitglieder”x”und”y”. Beachten Sie, dass die erste Zeile verwendet wird, um „MyClass1“ weiterzuleiten.

Eine Freundesklasse kann auf die privaten und geschützten Mitglieder der Klasse zugreifen, in der sie als Freund deklariert ist.

©Yurchanka Siarhei/Shutterstock.com

Dies informiert den Compiler über die Existenz von „MyClass1“, ohne es zuerst zu definieren. Dies geschieht, damit „MyClass1“ beim Kompilieren der Deklaration der Friend-Funktion berücksichtigt wird, wodurch Kompilierungsfehler vermieden werden.

So verwenden Sie eine Friend-Klasse

Im vorherigen Beispiel haben wir definiert die „myFriendFunction“ als Freund der „MyClass“-Klasse. Zugriff auf und Änderung des privaten Mitglieds „x“ wird der Freundesklasse gewährt.

Eine Freundesklasse sieht jedoch etwas anders aus. Hier ist ein Beispiel:

class MyClass { private: int x; öffentlich: Freundesklasse MyFriendClass; }; class MyFriendClass { public: void myFunction(MyClass& obj) { obj.x=10; } }

In diesem Fall wird die Klasse „MyFriendClass“ als Friend-Klasse der Klasse „MyClass“ bezeichnet. Jede darin enthaltene Funktion kann auf das private Element „x“ zugreifen, wie z. B. die Elementfunktion „myFunction“.

Abschluss

Das Schlüsselwort Friend kann verwendet werden, um eine Friend-Funktion zu deklarieren. Dadurch kann die Funktion auf private Mitglieder einer Klasse zugreifen. Sie können auch das Schlüsselwort Friend verwenden, um eine Friend-Klasse zu deklarieren. Das bedeutet, dass alle Member-Funktionen dieser Klasse auf die freundliche Klasse zugreifen können.

Das Schlüsselwort Friend ist nützlich, wenn wir bestimmten Mitgliedern einer Klasse Zugriff auf eine Funktion oder Klasse gewähren möchten, ohne alle diese geschützten Mitglieder der öffentlichen Schnittstelle preiszugeben. Generell sollte die Funktion nur bei Bedarf verwendet werden. Dies soll dazu beitragen, die Datenverbergungs-und Kapselungsprinzipien der objektorientierten Programmierung beizubehalten.

Als Nächstes

Friend-Funktion und Friend-Klasse in C++, Erklärte FAQs (häufig gestellte Fragen) 

Was ist eine Friend-Funktion?

Eine Friend-Funktion ist eine Funktion, der mithilfe des Friend-Schlüsselworts Zugriff auf die privaten Mitglieder einer Klasse gewährt wurde. p>

Was ist eine Friend-Klasse?

Eine Friend-Klasse funktioniert ähnlich, außer dass alle Member-Funktionen der Friend-Klasse auf die geschützten Member der anderen Klasse zugreifen können. p>

Ist eine Freundesfunktion eine Mitglieder-oder eine globale Funktion?

Es kann beides sein. Wenn Sie die Friend-Funktion außerhalb der Klasse definieren, ist sie eine globale Funktion und kann potenziell auf andere Klassen zugreifen. Wenn es in der Klassendefinition definiert ist, kann es nur auf Mitglieder dieser Klasse zugreifen.

Warum sollten Sie eine Friend-Funktion oder-Klasse verwenden?

Sie’sind nützlich, um privaten oder geschützten Klassenmitgliedern Zugriff zu gewähren, ohne all diese Informationen der öffentlichen Schnittstelle preiszugeben. Dies ist wichtig, um das Verbergen und Verkapseln von Daten aufrechtzuerhalten.

Kann eine Friend-Funktion auf Mitglieder einer Unterklasse zugreifen?

Nein, wenn sie innerhalb einer Basisklasse definiert ist dann kann es nicht auf Mitglieder von Unterklassen zugreifen.

Beeinflusst die Friend-Funktion die Leistung?

Nein, die Friend-Funktion wirkt sich nur auf die Sichtbarkeit privater Klassen aus Mitglieder.

Kann eine Freundesklasse vererbt werden?

Ja, Freundesklasse kann vererbt werden.

By Maxwell Gaven

Ich habe 7 Jahre im IT-Bereich gearbeitet. Es macht Spaß, den stetigen Wandel im IT-Bereich zu beobachten. IT ist mein Job, Hobby und Leben.