Verschil tussen vriendenfunctie en vriendenklasse

Schrijver: Laura McKinney
Datum Van Creatie: 1 April 2021
Updatedatum: 17 Kunnen 2024
Anonim
Lessen voor de 21ste eeuw: lezing Hans Leinfelder
Video: Lessen voor de 21ste eeuw: lezing Hans Leinfelder

Inhoud


De functie Vriend en vriendenklasse zijn de technieken die worden gebruikt om toegang te krijgen tot de privéleden van een klas met behulp van het trefwoord vriend. Het gemeenschappelijke verschil tussen de vriendenfunctie en de vriendenklasse is dat wanneer de vriendenfunctie wordt gebruikt, toegang tot de privéklasse-leden mogelijk is, maar in de vriendenklasse alleen de namen van de vriendenklasse en niet de privéleden van de klas.

De vriend functie of gebruikt door functie of klasse een negatieve impact kan hebben op het objectgeoriënteerde raamwerk omdat het de inkapseling wat tegen is Objectgeoriënteerde paradigma. Dit is de reden waarom de vriendenfunctie verstandig moet worden gebruikt, anders zou het kunnen breken de gegevens verbergen van de code.

Deze vriendenfunctie is geen van beide commutatieve en ook niet transitief. X is een vriend van Y betekent niet dat Y ook een vriend van X is. Als X een vriend van Y is en Y een vriend van Z is, betekent dit niet dat X een vriend van Z is.


    1. Vergelijkingstabel
    2. Definitie
    3. Belangrijkste verschillen
    4. Gevolgtrekking

Vergelijkingstabel

Basis voor vergelijkingFriend-functieVriendenklasse
basis-Het is een functie die wordt gebruikt met een trefwoord voor een vriend om een ​​niet-lidfunctie toegang te verlenen aan de privéleden van een klas.Het is een klasse die wordt gebruikt met een trefwoord van een vriend om toegang te krijgen tot de privéleden van een andere klasse.
Voorwaartse aangifteMoet gebruikt worden.Niet verplicht.
GebruikEen vriendenfunctie kan worden gebruikt in sommige situaties van overbelasting van de operator.Een vriendenklasse kan worden gebruikt wanneer een klas bovenop een andere klas wordt gemaakt.


Definitie van vriendenfunctie

De vriend functie wordt gebruikt om toegang te krijgen tot de privé- en beschermde leden van een klasse door de niet-ledenfunctie toegang te verlenen. In dit type functie wordt een vriend-trefwoord gebruikt vóór de functienaam op het moment van aangifte. Er zijn enkele beperkende voorwaarden van toepassing op de vriendenfunctie. De eerste voorwaarde is dat de vriendenfunctie niet wordt overgenomen door een kindklasse. De tweede voorwaarde is dat opslagklasse-specificeerder mogelijk niet aanwezig is in de vriendenfunctie, wat betekent dat het niet als statisch en extern kan worden verklaard.

De vriendenfunctie wordt niet aangeroepen met een aanroepend object van de klasse. De voorbeelden van vriendfunctie zijn: een globale functie, lidfunctie van een klasse, functiemalplaatje kan een vriendfunctie zijn. Laten we het begrijpen aan de hand van een voorbeeld.

#include namespace std; gebruiken; klasse eerst {int gegevens; public: first (int i): data (i) {} weergave van vriend nietig (const first & a); }; ongeldige weergave (const first & a) {cout << "data =" <namespace std; klasse eerste {// Declareer een vriend klasse vriend klasse tweede; public: First (): a (0) {} void () {cout << "Het resultaat is" << a << endl; } privé: int a; }; class Second {public: void change (First & yclass, int x) {yclass.a = x; }}; int main () First obj1; Tweede obj2; obj1 ().; obj2.change (obj1, 5); obj1 ().; // Output Het resultaat is 0 Het resultaat is 5

  1. Vriendfunctie is een functie die toegang heeft tot de privé- en beschermde leden van een klas. Een vriendenklasse daarentegen is een klas die helpt bij het verkrijgen van toegang tot de privéleden van een klas.
  2. Een vriendfunctie wordt verklaard door het prototype ervan in de klasse op te nemen, vooraf te gaan met het trefwoord vriend. Evenzo wordt een vriendenklasse ook gedefinieerd met behulp van een zoekwoordvriend.
  3. De forward-aangifte wordt gebruikt in het geval van een vriendfunctie tegenover, het is niet nodig om deze in de vriendenklasse te gebruiken.

Gevolgtrekking

Een vriendenfunctie is vereist wanneer een functie toegang moet hebben tot twee of meer onafhankelijke klassen, interne leden. Aan de andere kant is een vriendenklasse nodig wanneer een klas toegang tot de leden van een andere klas vereist. Wanneer een functie met meerdere leden een vriend van die functie moet zijn, is het in dat geval beter om de vriendenklasse te gebruiken.