Anbefalet, 2024

Redaktørens Valg

Forskel mellem Friend Function og Friend Class

Ven-funktionen og vensklassen er de teknikker, der bruges til at få adgang til de private medlemmer af en klasse ved hjælp af vennens søgeord. Den almindelige forskel mellem venfunktionen og vensklassen er, at når venens funktion er brugt, kan de private klassemedlemmer nås, men i vensklassen er der kun adgang til navnene på vensklassen, ikke de private medlemmer af klassen.

Vennefunktionen, hvad enten den bruges af funktion eller klasse, kan fremkalde en negativ indvirkning på de objektorienterede rammer, da det svækker indkapslingen, som er imod det objektorienterede paradigme. Dette er grunden til, at venens funktion skal bruges klogt ellers, det kan ødelægge data skjule koden.

Denne venfunktion er hverken kommutativ eller transitiv . X er en ven af ​​Y, ikke konkluderer, at Y er også en ven af ​​X. Hvis X er en ven af ​​Y og Y er en ven af ​​Z, betyder det ikke, at X er en ven af ​​Z.

Sammenligningstabel

Grundlag for sammenligningVen FunktionVenklasse
GrundlæggendeDet er en funktion, der bruges sammen med et venskabsord for at give en ikke-medlemsfunktion adgang til de private medlemmer af en klasse.Det er en klasse, der bruges sammen med et venskabsord for at få adgang til de private medlemmer af en anden klasse.
VideresendelsesangivelseSkal anvendes.Ikke obligatorisk.
BrugEn venfunktion kan bruges i nogle tilfælde af overbelastning af operatøren.En vensklasse kan bruges, når en klasse er oprettet på toppen af ​​en anden klasse.

Definition af venfunktion

Vennefunktionen bruges til at få adgang til de private og beskyttede medlemmer af en klasse ved at tillade den ikke-medlemsfunktion at få adgang. I denne type funktion bruges et venskabsord til funktionens navn på tidspunktet for erklæringen. Der er nogle restriktive betingelser for venens funktion. Den første betingelse er, at venfunktionen ikke arves af en børneklasse. Den anden betingelse er, at lagerklassespecifikke måske ikke er til stede i venfunktionen, hvilket betyder, at den ikke kan deklareres som statisk og ekstern.

Vennefunktionen kaldes ikke med et opkaldsobjekt af klassen. Eksempler på venfunktion er: En global funktion, medlemsfunktion af en klasse, funktionsskabelon kan være en venfunktion. Lad os forstå det ved hjælp af et eksempel.

 # include using namespace std; klasse først {int data; offentligt: ​​første (int i): data (i) {} ven ugyldig visning (const første & a); }; void display (const first & a) {cout << "data =" < 

Definition af ven klasse

Ligesom vennefunktionen kan vi gøre en klasse til at være en ven til en anden klasse, der omtales som vensklasse . Så vensklassen kan få adgang til private medlemmer defineret i den anden klasse. Det er vigtigt at huske, at vensklassen kun kan få adgang til navnene defineret i den anden klasse i stedet for at arve i anden klasse. Præcis kan medlemmerne af første klasse ikke blive medlemmer af vensklassen. Disse vensklasser bruges sjældent.

Vinklassen kan deklareres i mere end en enkelt klasse. Det betragtes som en kort alternativ metode til venfunktion, fordi vi ved hjælp af dette kan oprette en vensklasse, der kan få adgang til hele data-medlemmerne og fungere i stedet for at oprette flere venfunktioner.

 # include using namespace std; klasse først {// erklære en vensklasse vensklasse anden; offentlig: Første (): a (0) {} tomtryk () {cout << "Resultatet er" << a << endl; } privat: int a; }; klasse anden {offentlig: tomrumsændring (første og yclass, int x) {yclass.a = x; }}; int main () // Output Resultatet er 0 Resultatet er 5 

Nøgleforskelle mellem venskab og vensklasse

  1. Vennefunktion er en funktion, der kan få adgang til de private og beskyttede medlemmer af en klasse. I modsætning hertil er en vensklasse en klasse, der hjælper med at få adgang til de private medlemmer af en klasse.
  2. En venfunktion erklæres ved at inkludere prototypen inde i klassen, antecere den med søgeordsvennen. På samme måde defineres en vensklasse også ved hjælp af søgeordskvinde.
  3. Fremsendelseserklæringen anvendes i tilfælde af venfunktion mod, det er ikke nødvendigt at bruge det i vensklasse.

Konklusion

En venfunktion er nødvendig, når en funktion skal have adgang til to eller flere uafhængige klasser, interne medlemmer. På den anden side er en vensklasse nødvendig, når en klasse kræver adgang til medlemmerne af en anden klasse. Når en funktion med flere medlemmer skal være en ven af ​​den funktion, er det i så fald bedre at bruge vensklasse.

Top