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

Szerző: Laura McKinney
A Teremtés Dátuma: 1 Április 2021
Frissítés Dátuma: 6 Lehet 2024
Anonim
Különbség a barát funkció és a barát osztály között - Technológia
Különbség a barát funkció és a barát osztály között - Technológia

Tartalom


A barát funkció és a barát osztály az a módszer, amellyel az osztály magántagjai hozzáférhetők a barát kulcsszó segítségével. A barát-funkció és a barát-osztály közötti általános különbség az, hogy a barát-funkció használatakor a privát osztály tagjai hozzáférhetők, de a baráti osztályban csak a baráti osztály nevét lehet elérni, nem pedig az osztály magán tagjait.

A barát funkció függetlenül attól, hogy a függvény vagy az osztály felhasználja-e negatív hatást az objektum-orientált keretre, mivel gyengíti a Egységbezárás amely ellen van objektum orientált paradigma. Ez az oka annak, hogy a barát funkciót okosan kell használni, különben csak lehet szünet a adatok elrejtése a kód.


Ez a barát funkció sem kommutatív és sem tranzitív. X Y barátja nem azt a következtetést vonja le, hogy Y is X barátja. Ha X Y barátja, és Y Z barátja, akkor nem jelenti azt, hogy X Z barátja.

    1. Összehasonlító táblázat
    2. Meghatározás
    3. Főbb különbségek
    4. Következtetés

Összehasonlító táblázat

Az összehasonlítás alapjaBarát funkcióBarát osztály
AlapvetőEz egy olyan funkció, amelyet egy barát kulcsszóval használnak, hogy hozzáférést biztosítsanak egy nem tagfüggvényhez az osztály magántagjai számára.Ez egy osztály, amelyet egy barát kulcsszóval használnak egy másik osztály magántagjainak eléréséhez.
Előre szóló nyilatkozatFel kell használni.Nem kötelező.
HasználatEgy barát funkció használható az operátor túlterhelésének bizonyos helyzetében.A baráti osztály akkor használható, ha egy osztályt egy másik osztály tetejére hoznak létre.


A barát funkció meghatározása

A barát funkció az osztály magán és védett tagjaihoz való hozzáféréshez használható, lehetővé téve a nem tag funkció elérését. Az ilyen típusú függvényben egy barát kulcsszót használunk a funkció neve előtt a deklaráláskor. Van néhány korlátozó feltétel a barát funkciójára. Az első feltétel az, hogy a barát funkciót nem örökli meg egy gyermekosztály. A második feltétel az, hogy a tárolóosztály-specifikátor nem lehet jelen a barát funkcióban, ami azt jelenti, hogy nem deklarálható statikusnak és külsőnek.

A barát funkciót nem hívja meg az osztály meghívó objektuma. Példák a barát funkcióra: globális függvény, egy osztály tagfüggvénye, függvénysablon is lehet barát funkció. Megértjük ezt egy példa segítségével.

#include névtér std; osztály első {int adatok; public: first (int i): data (i) {} friend void display (const first & a); }; void display (const first & a) {cout << "data =" <névtér std; osztály első {// Nyilatkozzon egy barát osztályról barát osztály második; nyilvános: Első (): a (0) {} void () {cout << "Az eredmény" << a << endl; } magán: int a; }; osztály második {nyilvános: érvénytelen változás (első és yclass, int x) {yclass.a = x; }}; int main () Első obj1; Második obj2; obj1. (); obj2.change (obj1, 5); obj1. (); // Kimenet Az eredmény 0 Az eredmény 5

  1. A Friend függvény olyan funkció, amely hozzáférhet az osztály privát és védett tagjaihoz. Ezzel szemben a baráti osztály olyan osztály, amely elősegíti az osztály magántagjainak elérését.
  2. Egy barát funkciót úgy deklarálnak, hogy prototípusát belefoglalják az osztályba, megelőzik azt a barát kulcsszóval. Hasonlóképpen, egy barát osztályt is meghatározza a barát kulcsszó.
  3. Az előre küldött nyilatkozatot barátbarát funkció esetén használják, nem szükséges, hogy baráti osztályban használja.

Következtetés

Egy barát funkcióra van szükség, ha egy funkciónak két vagy több független osztályhoz, belső taghoz kell hozzáférnie. Másrészről, baráti osztályra van szükség, amikor az osztály megköveteli egy másik osztály tagjainak elérését. Ha a többtagú függvénynek ennek a funkciónak a barátjának kell lennie, akkor ebben az esetben jobb a baráti osztály használata.