Empfohlen, 2021

Tipp Der Redaktion

Unterschied zwischen Friend-Funktion und Friend-Klasse

Die Friend-Funktion und die Friend-Klasse sind die Techniken, mit denen auf die privaten Mitglieder einer Klasse mit dem Friend-Schlüsselwort zugegriffen wird. Der gemeinsame Unterschied zwischen der Friend-Funktion und der Friend-Klasse besteht darin, dass bei Verwendung der Friend-Funktion auf die privaten Klassenmitglieder zugegriffen werden kann. In der Friend-Klasse werden jedoch nur die Namen der Friend-Klasse und nicht die privaten Mitglieder der Klasse aufgerufen.

Das Friend-Feature, egal ob es von einer Funktion oder einer Klasse verwendet wird, kann negative Auswirkungen auf das objektorientierte Framework haben, da es die Einkapselung schwächt, die dem objektorientierten Paradigma zuwiderläuft. Aus diesem Grund muss die Friend-Funktion mit Bedacht verwendet werden, da sonst das Datenverstecken des Codes beschädigt werden kann.

Diese befreundete Funktion ist weder kommutativ noch transitiv . X ist ein Freund von Y und schließt nicht aus, dass Y auch ein Freund von X ist. Wenn X ein Freund von Y ist und Y ein Freund von Z ist, bedeutet dies nicht, dass X ein Freund von Z ist.

Vergleichstabelle

Basis zum VergleichFriend-FunktionFreund Klasse
BasicEs ist eine Funktion, die mit einem befreundeten Schlüsselwort verwendet wird, um den privaten Mitgliedern einer Klasse Zugriff auf Nicht-Mitgliederfunktionen zu gewähren.Diese Klasse wird mit einem Friend-Schlüsselwort verwendet, um auf die privaten Mitglieder einer anderen Klasse zuzugreifen.
Weitergabe der ErklärungMuss benutzt werden.Nicht verpflichtend.
BenutzenIn einigen Situationen, in denen der Bediener überlastet ist, kann eine Friend-Funktion verwendet werden.Eine Friend-Klasse kann verwendet werden, wenn eine Klasse über einer anderen Klasse erstellt wird.

Definition der Friend-Funktion

Die Friend-Funktion wird verwendet, um auf die privaten und geschützten Member einer Klasse zuzugreifen, indem der Nicht-Member-Funktion Zugriff gewährt wird. Bei dieser Art von Funktion wird zum Zeitpunkt der Deklaration vor dem Funktionsnamen ein friend-Schlüsselwort verwendet. Es gibt einige einschränkende Bedingungen für die Freundesfunktion. Die erste Bedingung ist, dass die Friend-Funktion nicht von einer Kindklasse vererbt wird. Die zweite Bedingung ist, dass der Speicherklassenspezifizierer möglicherweise nicht in der Friend-Funktion vorhanden ist. Dies bedeutet, dass er nicht als statisch und extern deklariert werden kann.

Die Friend-Funktion wird nicht mit einem aufrufenden Objekt der Klasse aufgerufen. Beispiele für Friend-Funktionen sind: eine globale Funktion, Member-Funktion einer Klasse, Funktionsvorlage kann eine Friend-Funktion sein. Verstehen wir es anhand eines Beispiels.

 #include using namespace std; class first {int data; public: first (int i): data (i) {} Anzeige der Anzeige eines Freundes (const first & a); }; Anzeige ungültig (const first & a) {cout << "data =" < 

Definition von Friend-Klasse

Ähnlich wie bei der Friend-Funktion können wir eine Klasse zu einem Freund einer anderen Klasse machen, die als Friend-Klasse bezeichnet wird . Damit kann die Friend-Klasse auf private Mitglieder zugreifen, die in der anderen Klasse definiert sind. Es ist wichtig zu wissen, dass die Friend-Klasse nur auf die in der anderen Klasse definierten Namen zugreifen kann, anstatt eine andere Klasse zu erben. Die Mitglieder der ersten Klasse können nämlich nicht Mitglieder der Freundesklasse werden. Diese Freundesklassen werden selten verwendet.

Die Friend-Klasse kann in mehr als einer Klasse deklariert werden. Sie wird als eine kurze Alternativmethode für die Friend-Funktion betrachtet, da wir damit eine Friend-Klasse erstellen können, die auf die gesamten Datenelemente und Funktionen zugreifen kann, anstatt mehrere Friend-Funktionen zu erstellen.

 #include using namespace std; class First {// Deklarieren eines Freundes class Friend class Second; public: First (): a (0) {} void print () {cout << "Das Ergebnis ist" << a << endl; } privat: int a; }; class Second {public: void change (Erste & yKlasse, int x) {yclass.a = x; }}; int main () // Output Das Ergebnis ist 0 Das Ergebnis ist 5 

Hauptunterschiede zwischen Friend-Funktion und Friend-Klasse

  1. Die Friend-Funktion ist eine Funktion, die auf die privaten und geschützten Mitglieder einer Klasse zugreifen kann. Im Gegensatz dazu ist eine Freundesklasse eine Klasse, die beim Zugriff auf die privaten Mitglieder einer Klasse hilft.
  2. Eine Friend-Funktion wird deklariert, indem der Prototyp in die Klasse eingefügt wird, und zwar mit dem Schlüsselwort Friend. In ähnlicher Weise wird eine Friend-Klasse auch mit dem Schlüsselwort friend definiert.
  3. Die Vorwärtsdeklaration wird im Falle einer Friend-Funktion gegen verwendet, es ist nicht erforderlich, sie in der Friend-Klasse zu verwenden.

Fazit

Eine Friend-Funktion ist erforderlich, wenn eine Funktion auf zwei oder mehr unabhängige Klassen (interne Mitglieder) zugreifen muss. Auf der anderen Seite ist eine Freundesklasse erforderlich, wenn für eine Klasse der Zugriff auf die Mitglieder einer anderen Klasse erforderlich ist. Wenn eine Funktion mit mehreren Mitgliedern ein Freund dieser Funktion sein muss, ist es in diesem Fall besser, die Friend-Klasse zu verwenden.

Top