Unterschied zwischen Friend-Funktion und Friend-Klasse

Autor: Laura McKinney
Erstelldatum: 1 April 2021
Aktualisierungsdatum: 10 Kann 2024
Anonim
Tutorial C++ #059 [Deutsch] - friend-Funktionen, friend-Methoden & friend-Klassen
Video: Tutorial C++ #059 [Deutsch] - friend-Funktionen, friend-Methoden & friend-Klassen

Inhalt


Die Friend-Funktion und die Friend-Klasse sind die Techniken, mit denen mithilfe des Schlüsselworts friend auf die privaten Mitglieder einer Klasse zugegriffen werden kann. Der allgemeine Unterschied zwischen der Friend-Funktion und der Friend-Klasse besteht darin, dass bei Verwendung der Friend-Funktion auf die Mitglieder der privaten Klasse zugegriffen werden kann. In der Friend-Klasse wird jedoch nur auf die Namen der Friend-Klasse zugegriffen, nicht auf die privaten Mitglieder der Klasse.

Das Freund-Funktion Ob von Funktion oder Klasse verwendet, kann sich negativ auf das objektorientierte Framework auswirken, da es das schwächt Verkapselung das ist gegen die objektorientierter Paradigma. Dies ist der Grund, warum die Friend-Funktion sinnvoll verwendet werden muss, sonst könnte es sein brechen das Daten verstecken des Codes.

Diese Freund-Funktion gibt es auch nicht kommutativ und noch transitiv. X ist ein Freund von Y bedeutet nicht, dass Y auch ein Freund von X ist. Wenn X ein Freund von Y und Y ein Freund von Z ist, bedeutet dies nicht, dass X ein Freund von Z ist.


    1. Vergleichstabelle
    2. Definition
    3. Hauptunterschiede
    4. Fazit

Vergleichstabelle

VergleichsbasisFreund FunktionFreund Klasse
BasicDiese Funktion wird zusammen mit einem Schlüsselwort "friend" verwendet, um Nichtmitgliedern Zugriff auf die privaten Mitglieder einer Klasse zu gewähren.Es ist eine Klasse, die mit einem Schlüsselwort "friend" verwendet wird, um auf die privaten Mitglieder einer anderen Klasse zuzugreifen.
VorwärtserklärungMuss benutzt werden.Nicht verpflichtend.
VerwendenIn einigen Situationen, in denen der Bediener überlastet ist, kann eine Friend-Funktion verwendet werden.Eine Freundesklasse kann verwendet werden, wenn eine Klasse über einer anderen Klasse erstellt wird.


Definition der Freundfunktion

Das Freund Funktion wird verwendet, um auf die privaten und geschützten Member einer Klasse zuzugreifen, indem der Nicht-Member-Funktion der Zugriff gewährt wird. Bei dieser Art von Funktion wird zum Zeitpunkt der Deklaration ein Schlüsselwort friend vor dem Funktionsnamen verwendet. Es gibt einige einschränkende Bedingungen für die Freundschaftsfunktion. Die erste Bedingung ist, dass die Friend-Funktion nicht von einer untergeordneten Klasse geerbt wird. Die zweite Bedingung ist, dass der Speicherklassenspezifizierer in der Friend-Funktion möglicherweise nicht 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 die Friend-Funktion sind: Eine globale Funktion, eine Member-Funktion einer Klasse, eine Funktionsvorlage kann eine Friend-Funktion sein. Lassen Sie es uns anhand eines Beispiels verstehen.

#umfassen using namespace std; Klasse zuerst {int data; public: first (int i): Anzeige von Daten (i) {} Leere Freunde (const first & a); }; void display (const first & a) {cout << "data =" <mit dem Namespace std; class First {// Deklariere eine Freundklasse friend class Second; public: First (): a (0) {} void () {cout << "Das Ergebnis ist" << a << endl; } privat: int a; }; Klasse Second {public: void change (First & yclass, int x) {yclass.a = x; }}; int main () Erstes obj1; Zweites Objekt2; obj1. (); obj2.change (obj1, 5); obj1. (); // Ausgabe Das Ergebnis ist 0 Das Ergebnis ist 5

  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 den Zugriff auf die privaten Mitglieder einer Klasse erleichtert.
  2. Eine Friend-Funktion wird deklariert, indem der Prototyp in die Klasse eingeschlossen und mit dem Schlüsselwort friend versehen wird. Ebenso wird eine Friend-Klasse mit dem Schlüsselwort friend definiert.
  3. Die forward-Deklaration wird im Falle der friend-Funktion verwendet, während es nicht erforderlich ist, 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. Andererseits wird eine Freundesklasse benötigt, wenn eine Klasse den Zugriff auf die Mitglieder einer anderen Klasse erfordert. Wenn eine Funktion mit mehreren Mitgliedern ein Freund dieser Funktion sein muss, ist es in diesem Fall besser, die Klasse friend zu verwenden.