Skillnaden mellan Friend-funktionen och Friend Class

Författare: Laura McKinney
Skapelsedatum: 1 April 2021
Uppdatera Datum: 13 Maj 2024
Anonim
Morley Robbins - My Theory Of Everything
Video: Morley Robbins - My Theory Of Everything

Innehåll


Vänfunktionen och vänsklassen är de tekniker som används för att få åtkomst till privata medlemmar i en klass genom att använda vänsökord. Den vanliga skillnaden mellan vänfunktion och vänsklass är att när vänfunktionen används kan man få åtkomst till privata klassmedlemmar men i vänsklassen får man bara namnen på vänsklassen inte de privata medlemmarna i klassen.

De vän funktion om det används av funktion eller klass kan ge en negativ inverkan på det objektorienterade ramverket när det försvagar inkapsling vilket är emot objektorienterad paradigm. Detta är anledningen till att vänfunktionen måste användas klokt, annars kan den göra det ha sönder de data döljer av koden.

Denna vänfunktion är varken kommutativ och inte heller transitiv. X är en vän till Y drar inte slutsatsen att Y också är en vän till X. Om X är en vän till Y och Y är en vän till Z, innebär det inte att X är en vän till Z.


    1. Jämförelsediagram
    2. Definition
    3. Viktiga skillnader
    4. Slutsats

Jämförelsediagram

Grund för jämförelseVänfunktionVänsklassen
GrundläggandeDet är en funktion som används med ett vänsökord för att ge en icke-medlemsfunktion åtkomst till de privata medlemmarna i en klass.Det är en klass som används med ett vänsökord för att få åtkomst till privata medlemmar i en annan klass.
VidarebefordranMåste användas.Inte obligatoriskt.
Använda sig avEn vänsfunktion kan användas i vissa situationer för överbelastning av operatörerna.En vänsklass kan användas när en klass skapas på toppen av en annan klass.


Definition av vänsfunktion

De vänfunktion används för att komma åt de privata och skyddade medlemmarna i en klass genom att tillåta icke-medlemsfunktionen att få åtkomst. I denna typ av funktion används ett vänsökord före funktionsnamnet vid tidpunkten för deklarationen. Det finns vissa restriktiva villkor för vänfunktionen. Det första villkoret är att vänfunktionen inte ärvs av en barnklass. Det andra villkoret är att lagringsklassspecifikationen kanske inte finns i vänfunktionen, vilket innebär att den inte kan förklaras som statisk och extern.

Vänfunktionen kallas inte med ett påkallande objekt från klassen. Exemplen på vänfunktion är: en global funktion, en medlemsfunktion i en klass, funktionsmall kan vara en vänsfunktion. Låt oss förstå det med hjälp av ett exempel.

#inkludera med namnutrymme std; klass först {int data; public: first (int i): data (i) {} vän void display (const first & a); }; void display (const first & a) {cout << "data =" <med namnutrymmet std; klass först {// Förklara en vän klass vänsklass sekund; public: First (): a (0) {} void () {cout << "Resultatet är" << a << endl; } privat: int a; }; klass Andra {offentligt: ​​ogiltigt förändring (Första & yclass, int x) {yclass.a = x; }}; int main () Först obj1; Andra obj2; obj1 ().; obj2.change (obj1, 5); obj1 ().; // Output Resultatet är 0 Resultatet är 5

  1. Vänfunktion är en funktion som kan komma åt de privata och skyddade medlemmarna i en klass. Däremot är en vänsklass en klass som hjälper till att komma åt de privata medlemmarna i en klass.
  2. En vänfunktion deklareras genom att inkludera dess prototyp i klassen, antecede den med nyckelordet vän. På liknande sätt definieras en vänklass också med hjälp av nyckelord vän.
  3. Framåtdeklarationen används vid vänfunktion i motsats till, det är inte nödvändigt att använda den i vänklass.

Slutsats

En vänsfunktion krävs när en funktion behöver åtkomst till två eller flera oberoende klasser, interna medlemmar. Å andra sidan behövs en vänsklass när en klass kräver åtkomst till medlemmarna i en annan klass. När en funktion med flera medlemmar måste vara en vän till den funktionen, i så fall är det bättre att använda vänsklass.