Friend-Funktionen in C++ & Anwendungsfall mit Beispielen

Veröffentlicht: 2022-10-22

Das Verbergen von Daten ist eine grundlegende Softwareentwicklungstechnik, die in objektorientierten Programmiersprachen (OOPs) weit verbreitet ist. Es schränkt den Zugriff auf private Datenmember von außerhalb der Klasse ein. Eine als Friend-Funktion bekannte C++-Funktion verstößt jedoch gegen das Prinzip des Verbergens von Daten.

In diesem Artikel erfahren Sie, was eine Friend-Funktion in C++ ist, was eine Friend-Klasse ist, und untersuchen einige Anwendungsfälle mit Beispielen.

Schauen Sie sich unsere kostenlosen Technologiekurse an, um sich einen Wettbewerbsvorteil zu verschaffen.

Inhaltsverzeichnis

Was ist die Friend-Funktion in C++?

Eine Friend-Funktion in C++ ist eine Funktion, die außerhalb einer Klasse deklariert ist, aber Zugriff auf die privaten und geschützten Member der Klasse hat. Obwohl die privaten Member einer bestimmten Klasse für Nicht-Member-Funktionen nicht zugänglich sind, erhalten sie durch Deklarieren als Friend-Funktionen Zugriff auf die privaten und geschützten Member der Klassen.

Sehen Sie sich die erweiterte Zertifizierung von upGrad in DevOps an

Eigenschaften der Friend-Funktion

Die Friend-Funktion in C++ hat die folgenden Eigenschaften:

  • Die Friend-Funktion liegt außerhalb des Gültigkeitsbereichs der Klasse, für die sie als Friend deklariert wurde
  • Eine Friend-Funktion kann entweder ein Mitglied einer Klasse oder eine Funktion sein, die außerhalb des Gültigkeitsbereichs der Klasse deklariert ist
  • Die Freunde-Funktionalität ist nicht auf eine einzelne Klasse beschränkt.

Erkunden Sie unsere beliebten Softwareentwicklungskurse

Master of Science in Informatik von LJMU & IIITB Caltech CTME Cybersecurity-Zertifikatsprogramm
Full-Stack-Entwicklungs-Bootcamp PG-Programm in Blockchain
Executive PG-Programm in der Full-Stack-Entwicklung
Sehen Sie sich unten alle unsere Kurse an
Software-Engineering-Kurse

  • Das Aufrufen einer Friend-Funktion ist wie das Aufrufen einer normalen Funktion der Klasse, ohne das Objekt zu verwenden
  • Wir können die Friend-Funktion nicht mit dem Objekt aufrufen, da es nicht im Gültigkeitsbereich der Klasse liegt
  • Friend-Funktionen in C++ haben Objekte als Argumente
  • Wir können eine Freundesfunktion entweder im privaten oder im öffentlichen Teil deklarieren
  • Die Mitgliedsnamen sind für eine Freundesfunktion nicht direkt zugänglich, und sie muss den Punktmitgliedschaftsoperator und den Objektnamen mit dem Mitgliedsnamen verwenden

Informieren Sie sich über die Advanced Certification in Cyber ​​Security von upGrad

Syntax der Friend-Funktion

Um die Friend-Funktion zu deklarieren, verwenden wir das Friend-Schlüsselwort im Hauptteil der Klasse. Die Syntax der Friend-Funktion lautet:

Klasse Klassenname {

… .. …

Freund returnType functionName(arg list);

… .. …

}

Gefragte Fähigkeiten in der Softwareentwicklung

JavaScript-Kurse Core-Java-Kurse Kurse zu Datenstrukturen
Node.js-Kurse SQL-Kurse Full-Stack-Entwicklungskurse
NFT-Kurse DevOps-Kurse Big-Data-Kurse
React.js-Kurse Cyber-Sicherheitskurse Cloud-Computing-Kurse
Datenbankdesign-Kurse Python-Kurse Kryptowährungskurse

Wenn wir die Syntax aufschlüsseln, bedeutet jeder Begriff Folgendes:

  • friend ist das Schlüsselwort, das angibt, dass die Funktion eine Friend-Funktion ist
  • returnType ist der Rückgabetyp der Funktion
  • Funktionsname ist der Name der Funktion, die zu einem Freund der Klasse gemacht wurde
  • arg list sind die Argumente, die wir übergeben

Lernen Sie Softwareentwicklungskurse online von den besten Universitäten der Welt. Verdienen Sie Executive PG-Programme, Advanced Certificate-Programme oder Master-Programme, um Ihre Karriere zu beschleunigen.

Beispiel einer C++ Friend-Funktion

Schauen wir uns nun einige Programme an, um die Friend-Funktion zu veranschaulichen.

Beispiel 1: C++ Friend-Funktion zum Drucken der Höhe einer Box

#include <iostream>

mit Namensraum std;

Klasse Kiste

{

Privatgelände:

int Höhe;

Öffentlichkeit:

Box(): Höhe(0) { }

Freund int printHeight(Box); //Friend-Funktion

};

int Druckhöhe (Box h)

{

H.Höhe += 40;

h.height zurückgeben;

}

int Haupt()

{

Feld h;

cout<<“Höhe der Box: „<< printHeight(h)<<endl;

0 zurückgeben;

}

Lesen Sie unsere beliebten Artikel zur Softwareentwicklung

Wie implementiert man Datenabstraktion in Java? Was ist die innere Klasse in Java? Java-Identifikatoren: Definition, Syntax und Beispiele
Verstehen der Kapselung in OOPS mit Beispielen Befehlszeilenargumente in C erklärt Top 10 Merkmale und Merkmale von Cloud Computing im Jahr 2022
Polymorphismus in Java: Konzepte, Typen, Eigenschaften und Beispiele Pakete in Java und wie man sie verwendet? Git-Tutorial für Anfänger: Lernen Sie Git von Grund auf neu

Ausgabe:

Kastenhöhe: 40

Beispiel 2: Wenn die C++-Friend-Funktion für zwei Klassen geeignet ist

#include <iostream>

mit Namensraum std;

// Forward-Deklaration

Klasse ClassQ;

Klasse KlasseP {

Öffentlichkeit:

// Konstruktor zum Initialisieren von numP auf 12

ClassP() : numP(12) {}

Privatgelände:

int numP;

// Friend-Funktionsdeklaration

Freund int add(ClassP, ClassQ);

};

Klasse ClassQ {

Öffentlichkeit:

// Konstruktor zum Initialisieren von numQ auf 1

ClassQ() : numQ(1) {}

Privatgelände:

int numQ;

// Friend-Funktionsdeklaration

Freund int add(ClassP, ClassQ);

};

// Auf Member beider Klassen zugreifen

int add(KlasseP ObjektP, KlasseQ ObjektQ) {

return (objectP.numP + objectQ.numQ);

}

int Haupt() {

KlasseP ObjektP;

KlasseQ ObjektQ;

cout << „Summe: ” << add(objectP, objectQ);

0 zurückgeben;

}

Ausgabe:

Summe: 13

Im obigen Beispiel haben Klasse P und Klasse Q add() als Friend-Funktion deklariert, wodurch sie Zugriff auf die privaten Daten beider Klassen erhält. Darüber hinaus verwendet die Friend-Funktion innerhalb der Klasse P die Klasse Q.

Also machen wir eine Vorwärtsdeklaration der Klasse Q im Programm.

Implementieren einer Friend-Funktion

Um eine bessere Vorstellung von der Friend-Funktion in C++ zu bekommen, schauen wir uns nun die zwei Möglichkeiten an, wie wir die Friend-Funktion implementieren können.

  1. Implementieren einer Friend-Funktion in C++ durch eine Methode einer anderen Klasse

Wir deklarieren eine Friend-Klasse in C++, wenn wir Zugriff auf die privaten und geschützten Member einer anderen Klasse benötigen, in der sie als Friend deklariert wurde. Es ist auch möglich, eine einzelne Elementfunktion einer anderen Klasse als Freund zu deklarieren.

Klasse Klassenname

{

Friend-Klasse Friend_Class;// Friend-Klasse deklarieren

};

Klasse Freund_Klasse

{

};

In der obigen Deklaration der Friend-Klasse sind alle Funktionen in Friend_Class die Friend-Funktionen von Class_Name .

Hier ist ein einfaches Beispiel, um die Implementierung von Friend-Funktionen durch eine Methode einer anderen Klasse zu veranschaulichen:

#include <iostream>

mit Namensraum std;

Klasse a

{

int p=4;

Freund Klasse B; //Freundesklasse

};

Klasse b

{

Öffentlichkeit:

ungültige Anzeige (A &a)

{

cout<<”Wert von p ist:” <<ap;

}

};

int Haupt ()

{

Ein ein;

Bb;

  1. Anzeige (a);

0 zurückgeben;

}

Ausgabe:

Wert von p ist:4

  1. Implementieren einer globalen Funktion

Durch die Implementierung einer globalen Friend-Funktion können wir auf alle geschützten und privaten Member der globalen Klassendeklaration zugreifen. Hier ist ein Beispiel:

#include<iostream>

mit Namensraum std;

Klassenraum

{

int ein;

int b;

int c;

Öffentlichkeit:

void setdata (int x, int y, int z);

ungültige Anzeige (nichtig);

Freund Void-Operator- (Leerzeichen &s);

};

Leerzeichen ::setdata (int x, int y, int z)

{

a=x; b=y; c=z;

}

leerraum::anzeige(leer)

{

cout<<a<<” “<<b<<” “<<c<<“\n”;

}

void-Operator- (Leerzeichen &s)

{

sa =- sa;

sb =- sb;

sc =- sc;

}

int Haupt ()

{

Leerzeichen s;

  1. setdata (9,2,3);

cout<<“s:“;

  1. Anzeige ();

-s;

cout<<“-s:“;

  1. Anzeige ();

0 zurückgeben;

}

Ausgabe:

s: 9 2 3

-s: -9 -2 -3

Im obigen Beispielprogramm ist operator- die Friend-Funktion, die wir global im Bereich der Klasse deklariert haben.

Was ist die Freundesklasse in C++?

Obwohl es inzwischen ziemlich offensichtlich ist, ist eine Friend-Klasse eine Klasse, die sowohl Zugriff auf die privaten als auch auf die geschützten Member der Klasse hat, in der sie als Friend deklariert wurde.

Einfach ausgedrückt wird eine Friend-Klasse in C++ verwendet, wenn wir möchten, dass eine Klasse Zugriff auf die privaten und geschützten Member einer anderen Klasse hat.

Die Elementfunktionen der Klasse, die wir als Freunde einer anderen Klasse deklarieren, sind Freundesfunktionen der Freundesklasse. Somit verknüpfen die Friend-Funktionen beide Klassen.

Syntax der Friend-Klasse

Hier ist die Syntax einer Friend-Klasse in C++:

Klasse R; //Forward-Deklaration

Klasse P{

// Andere Deklarationen

Friend-Klasse R;

};

Klasse R{

// Erklärungen

};

In der obigen Abbildung ist Klasse R ein Freund von Klasse P. Folglich kann Klasse R auf die privaten Datenelemente von Klasse P zugreifen. Das Gegenteil ist jedoch nicht der Fall, und Klasse P kann nicht auf die privaten Datenelemente von Klasse R zugreifen .

Außerdem wird die Vorwärtsdeklaration gegeben, um den Compiler über die Existenz einer Entität zu informieren, bevor sie kategorisch definiert wird. Hier deklarieren wir die Klasse R mit einer Vorwärtsdeklaration, um den Compiler über ihre Existenz zu informieren. Die Vorwärtsdeklaration erlaubt es uns, die Objekte der Klasse R in der Klasse P zu verwenden.

Wozu dient die Friend-Funktion in C++?

Lassen Sie uns zum Abschluss unserer Diskussion die beiden Hauptverwendungen der Friend-Funktion in C++ betrachten:

  • Zuerst verwenden wir die Friend-Funktion, wenn wir auf die privaten und geschützten Mitglieder einer Klasse zugreifen möchten. Dazu würden wir im Allgemeinen verlangen, dass die Objekte dieser Klasse auf die privaten und geschützten Mitglieder zugreifen. Die Friend-Funktion eliminiert jedoch die Situation, in der die Funktion ein Klassenmitglied sein muss, um Zugriff zu erhalten.
  • Eine weitere Verwendung der Friend-Funktion in C++ ist das Überladen von Operatoren. Funktionen mit gleichem Namen, aber unterschiedlichen Zahlen und Argumenten werden als Überladungsfunktionen bezeichnet. Friend-Funktionen in C++ finden Verwendung beim Überladen von Operatoren.

In diesem Fall steht die Operatorüberladungsfunktion vor dem Friend-Schlüsselwort und deklariert einen Funktionsklassenbereich. Bei Überladung durch die Friend-Funktion nehmen binäre Operatoren zwei explizite Argumente entgegen, während unäre Operatoren ein Argument annehmen. Sie funktioniert genauso wie eine binäre Operatorfunktion, außer dass die Implementierung der Friend-Operatorfunktion außerhalb des Bereichs der Klasse stattfindet.

Das bringt uns zum Ende unserer Diskussion über die Friend-Funktion in C++ und ihre Verwendung. Ich hoffe, dies hilft Ihnen, Ihr Wissen über C++ zu erweitern.

Wenn Sie Ihre Karriere als Full-Stack-Entwickler starten möchten, bietet upGrad in Zusammenarbeit mit IIIT Bangalore ein vollständig online verfügbares Executive Post Graduate-Programm in Softwareentwicklung – Spezialisierung auf Full-Stack-Entwicklung von 13 Monaten.

Programm-Highlights:

  • Praktische Auseinandersetzung mit branchenrelevanten Fallstudien und Aufgaben
  • Über 450 Stunden 360-Grad-Lernen
  • Über 10 Top-Programmiertools und -sprachen
  • 1:1 Karriere-Mentoring-Sitzungen mit Mentoren aus der Industrie
  • Studentenbetreuung rund um die Uhr

Melden Sie sich noch heute an, um noch heute die exklusiven upGrad-Vorteile zu erhalten!

Was ist die Friend-Funktion in C++?

Eine Friend-Funktion in C++ ist eine Funktion, die kein Mitglied einer Klasse ist, aber Zugriff auf ihre privaten und geschützten Mitglieder hat.

Wie deklariert man eine Friend-Funktion?

Eine Freundesfunktion hat Zugriff auf die privaten und geschützten Daten einer Klasse. Um eine Friend-Funktion zu deklarieren, verwenden wir das Friend-Schlüsselwort im Hauptteil der Klasse.

Wie macht man einen Klassenfreund in C++?

Wir verwenden das Schlüsselwort Friend, um eine Klasse in C++ als Friend-Klasse zu deklarieren. Das Schlüsselwort ermöglicht jeder Klasse den Zugriff auf private und geschützte Elemente anderer Klassen und Funktionen.