friend functions c
Weitere Informationen zu Friend-Funktionen in C ++ mit Beispielen.
C ++ unterstützt die Funktion der Kapselung, bei der die Daten zusammen mit den darauf bearbeiteten Funktionen zu einer einzigen Einheit gebündelt werden. Auf diese Weise stellt C ++ sicher, dass auf Daten nur von den darauf ausgeführten Funktionen und nicht von Personen außerhalb der Klasse zugegriffen werden kann.
Dies ist eines der Unterscheidungsmerkmale von C ++, das die Daten bewahrt und verhindert, dass sie nach außen gelangen.
=> Lesen Sie die Easy C ++ - Schulungsserie durch.
In einigen Echtzeitanwendungen möchten wir jedoch manchmal auf Daten außerhalb der gebündelten Einheit zugreifen. Beispielsweise möchte eine Außenseiterklasse möglicherweise auf private und geschützte Daten einer C ++ - Klasse zugreifen.
C ++ bietet eine Möglichkeit für den Zugriff auf private und geschützte Daten mithilfe einer speziellen Funktion namens 'Freund' -Funktion oder -Klasse, die hier in diesem Lernprogramm erläutert wird.
Was du lernen wirst:
- Friend-Funktion in C ++
- Beispiel einer Freundfunktion
- Freund Klasse
- Vor- / Nachteile der Friend-Funktion
- Fazit
- Literatur-Empfehlungen
Friend-Funktion in C ++
Eine Friend-Funktion in C ++ ist eine Funktion, der das Schlüsselwort 'friend' vorangestellt ist. Wenn die Funktion als Freund deklariert ist, kann sie auf die privaten und geschützten Datenelemente der Klasse zugreifen.
Innerhalb der Klasse wird eine Friend-Funktion mit einem Friend-Schlüsselwort deklariert, das wie unten gezeigt vorangestellt ist.
class className{ …… friend returnType functionName(arg list); };
Wie oben gezeigt, wird die Friend-Funktion innerhalb der Klasse deklariert, auf deren private und geschützte Datenelemente zugegriffen werden soll. Die Funktion kann an einer beliebigen Stelle in der Codedatei definiert werden, und wir müssen weder das Schlüsselwort friend noch den Operator für die Bereichsauflösung verwenden.
Bei der Implementierung von Friend-Funktionen in unserem Programm sind einige Punkte zu beachten:
- Eine Friend-Funktion kann im privaten oder öffentlichen Bereich der Klasse deklariert werden.
- Es kann wie eine normale Funktion aufgerufen werden, ohne das Objekt zu verwenden.
- Eine Friend-Funktion gehört nicht zum Umfang der Klasse, von der sie ein Freund ist.
- Eine Friend-Funktion wird nicht mit dem Klassenobjekt aufgerufen, da sie nicht im Bereich der Klasse liegt.
- Eine Friend-Funktion kann nicht direkt auf die privaten und geschützten Datenelemente der Klasse zugreifen. Es muss ein Klassenobjekt verwenden und dann mit dem Punktoperator auf die Elemente zugreifen.
- Eine Friend-Funktion kann eine globale Funktion oder ein Mitglied einer anderen Klasse sein.
Beispiel einer Freundfunktion
Lassen Sie uns ein Programmierbeispiel implementieren, um die Verwendung der Friend-Funktion besser zu verstehen.
#include #include using namespace std; class sample{ int length, breadth; public: sample(int length, int breadth):length(length),breadth(breadth) {} friend void calcArea(sample s); //friend function declaration }; //friend function definition void calcArea(sample s){ cout<<'Area = '< Ausgabe:
Fläche = 150
Im obigen Programm haben wir eine Klassenstichprobe mit Länge und Breite der privaten Mitglieder. Wir haben einen öffentlichen Konstruktor, der die Werte für Länge und Breite initialisiert. Als nächstes haben wir eine Freundfunktion „calcArea“, die die Fläche unter Berücksichtigung von Länge und Breite berechnet.
Beachten Sie, dass calcArea eine Friend-Funktion ist und nicht Teil der Klasse ist. In der Hauptfunktion übergeben wir nach dem Erstellen eines Objekts des Klassenbeispiels dieses an die Funktion calcArea, die die Fläche berechnet und den Wert anzeigt.
Freund Klasse
Genau wie bei Freundfunktionen können wir auch eine Freundesklasse haben. Die Freundesklasse kann auf private und geschützte Mitglieder der Klasse zugreifen, für die sie ein Freund ist.
class A{ …… friend class B; }; class B{ …….. };
Wie oben dargestellt, ist Klasse B ein Freund der Klasse A. Klasse B kann also auf die privaten und geschützten Mitglieder der Klasse A zugreifen.
Dies bedeutet jedoch nicht, dass Klasse A auf private und geschützte Mitglieder der Klasse B zugreifen kann. Beachten Sie, dass die Freundschaft nicht gegenseitig ist, es sei denn, wir machen es so.
Ebenso wird die Freundschaft der Klasse nicht vererbt. Dies bedeutet, dass Klasse B ein Freund der Klasse A ist und kein Freund der Unterklassen der Klasse A.
Nehmen wir ein Programmierbeispiel, um die Freundesklasse zu demonstrieren.
#include #include using namespace std; class Area{ int length,breadth,area; public: Area(int length,int breadth):length(length),breadth(breadth) {} void calcArea(){ area = length * breadth; } friend class printClass; }; class printClass{ public: void printArea(Area a){ cout<<'Area = '< Ausgabe:
Fläche = 150
Was ist Automatisierungstest beim Testen von Software?
In diesem Programm haben wir zwei Klassen. Die Klasse „Fläche“, die die Fläche anhand der Parameter Länge und Breite berechnet. Beachten Sie, dass die Felder, der Bereich, die Länge und die Breite alle private Mitglieder der Klasse Bereich sind.
Die nächste Klasse, die verwendet wird, ist die 'printClass', die den von einer Funktion calcArea in der Area-Klasse berechneten Bereich druckt. Da die Mitglieder privat sind, müssen wir printClass zu einem Freund der Area-Klasse machen.
Sobald dies erledigt ist, erstellen wir in der Hauptfunktion ein Objekt der Area-Klasse, berechnen die Fläche und übergeben das Objekt an die printArea-Funktion der printClass-Klasse, um die Fläche anzuzeigen.
Vor- / Nachteile der Friend-Funktion
Ein Vorteil der Friend-Funktion oder -Klasse besteht darin, dass wir auf die privaten und geschützten Daten der Klasse zugreifen können. Zum Beispiel, Wenn wir eine verknüpfte Liste implementieren, können wir die verknüpfte Listenklasse als Freund der Knotenklasse festlegen und auf ihre Daten zugreifen, da die verknüpfte Liste aus Knoten besteht.
Daher kann sich in einer bestimmten Situation die Verwendung einer Freundfunktion oder -klasse als vorteilhaft erweisen. Es hat jedoch auch einige Nachteile.
Eines der Unterscheidungsmerkmale von C ++ ist die Kapselung, d. H. Die Bündelung von Daten und Funktionen, die mit diesen Daten zusammenarbeiten, so dass keine externe Funktion oder Klasse auf die Daten zugreifen kann. Indem wir den Friend-Funktionen oder der Klasse den Zugriff auf die privaten Mitglieder einer anderen Klasse ermöglichen, gefährden wir tatsächlich die Kapselungsfunktion.
Um dies zu verhindern, sollten wir vorsichtig sein, wenn wir Freundfunktionen oder Klassen verwenden. Wir sollten sicherstellen, dass wir nicht zu viele Funktionen und Klassen von Freunden in unserem Programm verwenden, die die Kapselung vollständig beeinträchtigen.
Fazit
Damit ist unser Tutorial zu Friend-Funktionen und Klassen in C ++ abgeschlossen.
Leser müssen sehr vorsichtig sein, wenn sie Klassen und Funktionen von Freunden verwenden, da dies ein Segen für den Programmierer sein kann. Sie müssen auch vorsichtig verwendet werden, da eine übermäßige Verwendung von Funktionen und Klassen von Freunden die OOP-Funktion der Kapselung in unserem Programm beeinträchtigen kann.
In unserem nächsten Tutorial erfahren Sie mehr über statische Funktionen in C ++.
=> Besuchen Sie hier, um C ++ von Grund auf neu zu lernen.
Literatur-Empfehlungen