C++ Friend-Funktionen

C++ Klassen und Objekte

Eine Friend-Funktion einer Klasse wird außerhalb der Klasse definiert, hat aber das Recht, auf alle private und protected Mitglieder der Klasse zuzugreifen. Obwohl der Prototyp der Friend-Funktion in der Klassendefinition erscheint, ist die Friend-Funktion keine Mitgliedsfunktion.

Ein Friend kann eine Funktion sein, die als Friend-Funktion bezeichnet wird; ein Friend kann auch eine Klasse sein, die als Friend-Klasse bezeichnet wird. In diesem Fall sind die gesamte Klasse und alle ihre Mitglieder Friends.

Um eine Funktion als Friend einer Klasse zu deklarieren, müssen Sie das Schlüsselwort vor dem Funktionsprototyp in der Klassendefinition verwenden.friend, wie unten gezeigt:

class Box
{
   double width;
public:
   double length;
   friend void printWidth( Box box );
   void setWidth( double wid );
};

Um alle Mitgliedsfunktionen der Klasse ClassTwo als Friends der Klasse ClassOne zu deklarieren, müssen Sie die folgende Deklaration in die Definition der Klasse ClassOne einfügen:

friend class ClassTwo;

Bitte sehen Sie sich das folgende Programm an:

Beispiel

#include <iostream> using namespace std; class Box { double width; public: friend void printWidth( Box box ); void setWidth( double wid ); }; // Definition der Memberfunktion void Box::setWidth( double wid ) { width = wid; } // Bitte beachten: printWidth() ist keine Memberfunktion irgendeiner Klasse void printWidth( Box box ) { /*Da printWidth() ein Friend von Box ist, kann es direkt auf jedes Member der Klasse zugreifen*/ cout << "Breite der Box : " << box.width <<endl; } // Die Hauptfunktion des Programms int main( ) { Box box; // Breite mit einer Memberfunktion setzen box.setWidth(10.0); // Die Friend-Funktion verwenden, um die Breite auszugeben printWidth( box ); return 0; }

Wenn der obige Code kompiliert und ausgeführt wird, liefert er die folgenden Ergebnisse:

Width of box : 10

C++ Klassen und Objekte

Weitere Erweiterungen