Rekommenderas, 2024

Redaktionen

Skillnad mellan Friend Function och Friend Class

Friend-funktionen och vänklassen är de tekniker som används för att komma åt de privata medlemmarna i en klass med hjälp av vänsord. Den vanliga skillnaden mellan vänfunktionen och vänklassen är att när en vänfunktion används kan de privata klassmedlemmarna nås men i vänklassen är endast vänklassens namn inte tillgängligt för de privata medlemmarna i klassen.

Vännsfunktionen, om den används av funktion eller klass, kan ge negativ inverkan på objektorienterade ramar, eftersom det försvagar inkapslingen som är emot det objektorienterade paradigmet. Det här är anledningen till att vänfunktionen måste användas klokt annars kan det bryta koden som döljer sig .

Denna vänfunktion är varken kommutativ eller transitiv . X är en vän till Y, inte utgår ifrån att Y också är en vän till X. Om X är en vän av Y och Y är en vän till Z, innebär det inte att X är en vän till Z.

Jämförelsediagram

Grunder för jämförelseVän FunktionVänklass
GrundläggandeDet är en funktion som används med ett vänsord för att ge en icke-medlemsfunktion tillgång till de privata medlemmarna i en klass.Det är en klass som används med ett vänsord för att få tillgång till privata medlemmar i en annan klass.
FramöverdeklarationMåste användas.Inte obligatoriskt.
Använda sig avEn vänfunktion kan användas i vissa situationer med överbelastning av operatören.En vänklass kan användas när en klass skapas på toppen av en annan klass.

Definition av vänfunktion

Vänfunktionen används för att få tillgång till privata och skyddade medlemmar i en klass genom att låta den icke-medlemsfunktionen få tillgång. I denna typ av funktion används ett vännsord för funktionens namn vid tidpunkten för deklarationen. Det finns några restriktiva villkor för vänfunktionen. Det första villkoret är att vänfunktionen inte ärveras av en barnklass. Det andra villkoret är att lagringsklassspecifikationen kanske inte finns i vänfunktionen, vilket innebär att den inte kan deklareras som statisk och extern.

Vännsfunktionen heter inte med klassens anropsobjekt. Exempel på vänfunktion är: en global funktion, medlemsfunktionen i en klass, funktionsmall kan vara en vänfunktion. Låt oss förstå det med hjälp av ett exempel.

 # include using namespace std; klass först {int data; allmänhet: först (int i): data (i) {} vän tom visning (const första & a); }; void display (const först & a) {cout << "data =" < 

Definition av vänklass

Liknande vänfunktionen kan vi göra en klass till en vän till en annan klass som kallas vänklass . Så att vänklassen kan få tillgång till privata medlemmar som är definierade inom den andra klassen. Det är viktigt att komma ihåg att vänklassen endast kan få tillgång till namnen som definierats i den andra klassen istället för att ärva i en annan klass. Exakt kan medlemmarna i första klassen inte bli medlemmar i vänklassen. Dessa vänklasser används sällan.

Vänklassen kan deklareras i mer än en enda klass. Det betraktas som ett kort alternativt sätt för vänfunktionen, eftersom vi med hjälp av detta kan skapa en vänklass som kan komma åt hela datadelmedlemmarna och fungera istället för att skapa flera vänfunktioner.

 # include using namespace std; klass först {// förklara en vän klass klass klass andra; public: First (): a (0) {} void print () {cout << "Resultatet är" << a << endl; } privat: int a; }; klass andra {public: void change (först & yclass, int x) {yclass.a = x; }}; int main () // Output Resultatet är 0 Resultatet är 5 

Viktiga skillnader mellan vänfunktion och vänklass

  1. Vänfunktionen är en funktion som kan komma åt de privata och skyddade medlemmarna i en klass. Däremot är en vänklass en klass som hjälper till att komma åt de privata medlemmarna i en klass.
  2. En vänfunktion deklareras genom att inkludera prototypen inuti klassen, antecera den med sökordsvännen. På samma sätt definieras en vänklass med hjälp av sökordsvänner.
  3. Framsättningsdeklarationen används vid vänfunktion mot, det är inte nödvändigt att använda det i vänklassen.

Slutsats

En vänfunktion krävs när en funktion behöver komma åt två eller flera oberoende klasser, interna medlemmar. Å andra sidan behövs en vänklass när en klass kräver att man får tillgång till medlemmarna i en annan klass. När en funktion med flera medlemmar måste vara en vän till den funktionen, är det bättre att använda vänklassen.

Top