Ajánlott, 2024

Szerkesztő Választása

A különbség a Friend Function és a Friend Class között

A Baráti funkció és a baráti osztály olyan technikák, amelyeket egy osztály privát tagjainak elérésére használnak barátja kulcsszó használatával. A baráti funkció és a baráti osztály közti különbség az, hogy amikor a barátfunkciót használják, a privát osztály tagjai elérhetők, de barát osztályban csak a barátok osztályának nevét érik el az osztály magánszemélyei.

A barátfunkció, függetlenül attól, hogy a funkció vagy az osztály használja, negatív hatást gyakorolhat az objektum-orientált keretre, mivel gyengíti az objektum-orientált paradigmával szembeni kapszulázást . Ez az oka annak, hogy a barátjellemzőt bölcsen kell használni, különben megszakíthatja a kód adatainak elrejtését .

Ez a barát funkció nem kommutatív és nem tranzitív . X egy Y barátja, és nem arra a következtetésre jut, hogy Y is X barátja. Ha X egy Y barátja, és Y egy Z barátja, nem vonja maga után, hogy X egy Z barátja.

Összehasonlító táblázat

Az összehasonlítás alapjaBarát funkcióBarátok osztály
AlapvetőEz egy függvény, amelyet egy ismerős kulcsszóval használnak, hogy a tagoktól független funkcióhoz férjenek hozzá az osztály magánszemélyeihez.Ez egy osztály, amelyet egy ismerős kulcsszóval használnak egy másik osztály magánszemélyeinek eléréséhez.
Előre szóló nyilatkozatHasználandó.Nem kötelező.
HasználatA felhasználó funkciója a kezelő túlterhelésének bizonyos helyzetében használható.Egy ismerős osztály akkor használható, ha egy osztályt egy másik osztály tetején hoz létre.

A barát funkciójának meghatározása

A barát funkciója az osztály magán és védett tagjainak elérésére szolgál, ha lehetővé teszi, hogy a nem tag funkció hozzáférjen. Ilyen típusú funkció esetén egy ismerős kulcsszót használnak a függvény neve előtt a bejelentés időpontjában. Néhány korlátozó feltétel vonatkozik a barát funkcióra. Az első feltétel az, hogy a barátfunkciót nem örökli egy gyermekosztály. A második feltétel az, hogy a tárolóosztály-specifikátor esetleg nem szerepel a barátfunkcióban, ami azt jelenti, hogy nem lehet statikus és extern.

A barátfunkciót nem hívják az osztály hívó objektumával. A barátfunkció példái a következők: egy globális függvény, egy osztály tagfüggvénye, a függvénysablon barátfunkció lehet. Megértjük egy példával.

 #include std; első osztályú {int adatok; nyilvános: első (int i): adat (i) {} ismerős üresség kijelzése (first first & a); }; void display (const first & a) {cout << "data =" < 

Baráti osztály meghatározása

A barátfunkcióhoz hasonlóan egy osztályt egy másik osztály barátjának is nevezhetünk, amelyet barát osztálynak neveznek. Annak érdekében, hogy a baráti osztály hozzáférhessen a másik osztályban meghatározott magán tagokhoz. Fontos megjegyezni, hogy a barátok osztálya csak a másik osztályban meghatározott neveket érheti el, ahelyett, hogy más osztályt örökölne. Pontosan az első osztályú tagok nem válhatnak a barát osztályba. Ezeket a barát osztályokat ritkán használják.

A baráti osztály több osztályban is bejelenthető. Ez egy rövid alternatív módszer a barátfunkcióhoz, mert ezzel egy olyan barát osztályt hozhatunk létre, amely több barátos funkció létrehozása helyett hozzáférhet a teljes adat tagokhoz és funkciókhoz.

 #include std; osztály Első {// Ismerje meg egy barát osztály osztály barátja második; nyilvános: Először (): a (0) {} void print () {cout << "Az eredmény" << a << endl; } magán: int a; }; class Second {public: void change (Első & yclass, int x) {yclass.a = x; }}; int main () // Kimenet Az eredmény 0 Az eredmény 5 

A különbség a baráti funkció és a barát osztály között

  1. A barát funkciója olyan funkció, amely hozzáférhet az osztály magán és védett tagjaihoz. Ezzel szemben a barátok osztálya olyan osztály, amely segíti az osztály magán tagjainak elérését.
  2. Egy barátfunkciót a prototípusnak az osztályon belüli beillesztésével jeleznek ki, majd a kulcsszó barátjával. Hasonlóképpen, egy ismerős osztályt is definiál a kulcsszó barát segítségével.
  3. Az előretekintő nyilatkozatot a barátja függvényében használják, nem szükséges a barát osztályban használni.

Következtetés

Egy barátfunkció akkor szükséges, ha egy függvénynek két vagy több független osztályhoz, belső tagokhoz kell hozzáférnie. Másrészről egy barát osztályra van szükség, ha egy osztály megköveteli egy másik osztály tagjainak elérését. Ha egy több tagú funkciónak e funkció barátjának kell lennie, akkor ebben az esetben jobb, ha barátosztályt használ.

Top