Forskjell mellom vennefunksjon og venneklasse

Forfatter: Laura McKinney
Opprettelsesdato: 1 April 2021
Oppdater Dato: 17 Kan 2024
Anonim
Difference between class member function and friend function | friend function and class function
Video: Difference between class member function and friend function | friend function and class function

Innhold


Vennefunksjonen og venneklassen er teknikkene som brukes for å få tilgang til private medlemmer av en klasse ved å bruke vennens nøkkelord. Den vanlige forskjellen mellom vennefunksjon og venneklasse er at når vennefunksjon brukes, kan du få tilgang til private klassemedlemmer, men i venneklasse får du bare tilgang til navnene på venneklassen, ikke de private medlemmene i klassen.

De vennefunksjon om det brukes av funksjon eller klasse kan gi en negativ innvirkning på det objektorienterte rammeverket når det svekker innkapsling som er mot objekt orientert paradigme. Dette er grunnen til at vennefunksjonen må brukes med omhu, ellers kan det gå i stykker de data gjemmer seg av koden.

Denne vennefunksjonen er ingen av dem kommutativ og heller ikke transitive. X er en venn av Y gjør ikke utfra at Y er også en venn av X. Hvis X er en venn av Y og Y er en venn av Z, impliserer det ikke at X er en venn av Z.


    1. Sammenligningstabell
    2. Definisjon
    3. Viktige forskjeller
    4. Konklusjon

Sammenligningstabell

Grunnlag for sammenligningVennefunksjonVenneklasse
grunn~~POS=TRUNCDet er en funksjon som brukes sammen med et vennens nøkkelord for å gi en ikke-medlemsfunksjon tilgang til de private medlemmene i en klasse.Det er en klasse som brukes sammen med et vennens nøkkelord for å få tilgang til private medlemmer i en annen klasse.
VideresenderklæringMå brukes.Ikke obligatorisk.
BrukEn vennefunksjon kan brukes i en situasjon med overbelastning av operatøren.En venneklasse kan brukes når en klasse opprettes på toppen av en annen klasse.

Definisjon av vennefunksjon

De vennefunksjon brukes til å få tilgang til de private og beskyttede medlemmene i en klasse ved å la ikke-medlemsfunksjonen få tilgang. I denne typen funksjoner brukes et vennsøkkelord før funksjonsnavnet på erklæringstidspunktet. Det er noen restriktive forhold som gjelder vennefunksjonen. Den første betingelsen er at vennefunksjonen ikke blir arvet av en barneklasse. Den andre betingelsen er at lagerklasse-spesifiser ikke kan være til stede i vennefunksjonen, noe som betyr at den ikke kan erklæres som statisk og ekstern.


Vennefunksjonen blir ikke kalt med et påkallende objekt fra klassen. Eksemplene på vennefunksjon er: en global funksjon, medlemsfunksjon i en klasse, funksjonsmal kan være en vennefunksjon. La oss forstå det ved hjelp av et eksempel.

#inkludere bruker navneområde std; klasse først {int data; public: first (int i): data (i) {} friend void display (const first & a); }; void display (const first & a) {cout << "data =" <bruker navneområde std; klasse først {// Forklar en venn klasse venneklasse sekund; public: First (): a (0) {} void () {cout << "Resultatet er" << a << endl; } privat: int a; }; klasse Andre {offentlig: ugyldig endring (First & yclass, int x) {yclass.a = x; }}; int main () Først obj1; Andre obj2; obj1 (.); obj2.change (obj1, 5); obj1 (.); // Output Resultatet er 0 Resultatet er 5

  1. Vennefunksjon er en funksjon som har tilgang til private og beskyttede medlemmer av en klasse. Derimot er en venneklasse en klasse som hjelper deg med å få tilgang til de private medlemmene i en klasse.
  2. En vennefunksjon blir erklært ved å inkludere prototypen i klassen, før den med søkeordet venn. Tilsvarende er en venneklasse også definert ved hjelp av nøkkelordvenn.
  3. Videresenderklæringen brukes i tilfelle vennefunksjon i mot, det er ikke nødvendig å bruke den i venneklasse.

Konklusjon

En vennefunksjon er påkrevd når en funksjon trenger tilgang til to eller flere uavhengige klasser, interne medlemmer. På den annen side er det nødvendig med en venneklasse når en klasse krever tilgang til medlemmene i 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 venneklasse.