Anbefalt, 2024

Redaksjonens

Forskjell mellom vennfunksjon og venneklasse

Vennefunksjonen og venneklassen er teknikker som brukes til å få tilgang til de private medlemmene av en klasse ved hjelp av vennsøkeord. Den vanlige forskjellen mellom vennfunksjon og venneklasse er at når vennens funksjon er brukt, kan de private klassemedlemmene nås, men i venneklassen er det bare navnene på venneklassen som er tilgjengelige ikke de private medlemmene av klassen.

Vennefunksjonen, enten brukt av funksjon eller klasse, kan gi en negativ innvirkning på objektobjektivet, da det svekker innkapslingen som er mot det objektorienterte paradigmet. Dette er grunnen til at vennens funksjon må brukes klokt ellers kan det ødelegge data som gjemmer koden.

Denne vennfunksjonen er hverken kommutativ eller transitiv . X er en venn av Y, ikke konkluderer at Y er også en venn av X. Hvis X er en venn av Y og Y er en venn av Z, impliserer ikke at X er en venn av Z.

Sammenligningstabel

Grunnlag for sammenligningVennfunksjonVenneklasse
grunn~~POS=TRUNCDet er en funksjon som brukes med et vennsøkeord for å gi en ikke-medlemsfunksjon tilgang til de private medlemmene av en klasse.Det er en klasse som brukes med et vennsøkeord for å få tilgang til de private medlemmene av en annen klasse.
VideresendelseserklæringMå brukes.Ikke obligatorisk.
BrukEn vennfunksjon kan brukes i noen situasjon av overbelastning av operatøren.En vennklasse kan brukes når en klasse opprettes på toppen av en annen klasse.

Definisjon av vennens funksjon

Vennefunksjonen brukes til å få tilgang til de private og beskyttede medlemmene av en klasse ved å tillate at ikke-medlemsfunksjonen får tilgang. I denne typen funksjon brukes et vennsøkeord før funksjonsnavnet på tidspunktet for erklæringen. Det er noen restriktive forhold som gjelder for vennens funksjon. Den første betingelsen er at vennens funksjon ikke arves av en barneklasse. Den andre betingelsen er at lagringsklassespesifikasjonen kanskje ikke er til stede i vennfunksjon, noe som betyr at den ikke kan deklareres som statisk og ekstern.

Vennefunksjonen kalles ikke med et oppfordringsobjekt av klassen. Eksemplene på vennfunksjon er: En global funksjon, medlemsfunksjon av en klasse, funksjonsmal kan være en vennfunksjon. La oss forstå det ved hjelp av et eksempel.

 #include bruker navneområde std; klasse først {int data; offentlig: første (int i): data (i) {} venn ugyldig visning (const første & a); }; ugyldig visning (const first & a) {cout << "data =" < 

Definisjon av venneklasse

I likhet med vennfunksjonen kan vi lage en klasse for å være en venn av en annen klasse som kalles venneklasse . Slik at venneklassen kan få tilgang til private medlemmer som er definert i den andre klassen. Det er viktig å huske at venneklassen bare kan få tilgang til navnene som er definert i den andre klassen i stedet for å arve i annen klasse. Nøyaktig, medlemmene i første klasse kan ikke bli medlemmer av venneklassen. Disse venneklassene brukes sjelden.

Venneklassen kan deklareres i mer enn en enkelt klasse. Det regnes som en kort alternativ metode for vennfunksjonen, fordi vi ved hjelp av dette kan lage en venneklasse som kan få tilgang til hele datalammen og fungere i stedet for å skape flere vennfunksjoner.

 #include bruker navneområde std; klasse først {// erklære en venn klasse venn klasse andre; offentlig: Første (): a (0) {} tomtrykk () {cout << "Resultatet er" << a << endl; } privat: int a; }; klasse andre {offentlig: tomt forandring (første og yclass, int x) {yclass.a = x; }}; int main () // Output Resultatet er 0 Resultatet er 5 

Viktige forskjeller mellom vennfunksjon og venneklasse

  1. Vennefunksjon er en funksjon som er i stand til å få tilgang til de private og beskyttede medlemmene av en klasse. I kontrast er en vennklasse en klasse som hjelper til å få tilgang til de private medlemmene av en klasse.
  2. En vennfunksjon er erklært ved å inkludere prototypen i klassen, antecere den med søkeordvennen. På samme måte defineres en vennklasse også ved hjelp av søkeordvenn.
  3. Forsendelseserklæringen brukes i tilfelle vennfunksjonen mot, det er ikke nødvendig å bruke den i venneklassen.

Konklusjon

En vennfunksjon er nødvendig når en funksjon trenger tilgang til to eller flere uavhengige klasser, interne medlemmer. På den annen side er det behov for en vennklasse når en klasse krever tilgang til medlemmene av en annen klasse. Når en funksjon med flere medlemmer trenger å være en venn av den funksjonen, er det i så fall bedre å bruke venneklassen.

Top