Razlika med funkcijo prijatelja in razredom prijateljev

Avtor: Laura McKinney
Datum Ustvarjanja: 1 April 2021
Datum Posodobitve: 17 Maj 2024
Anonim
Our Miss Brooks: Magazine Articles / Cow in the Closet / Takes Over Spring Garden / Orphan Twins
Video.: Our Miss Brooks: Magazine Articles / Cow in the Closet / Takes Over Spring Garden / Orphan Twins

Vsebina


Funkcija Friend in friend class so tehnike, ki se uporabljajo za dostop do zasebnih članov razreda s pomočjo ključne besede friend. Skupna razlika med prijateljevo funkcijo in prijateljevim razredom je, da lahko pri uporabi funkcije prijatelja dostopamo do članov zasebnega razreda, vendar v razredu prijateljev, samo do imen razreda prijatelja pa do zasebnih članov razreda.

The prijatelja funkcija ne glede na to, ali se uporablja s funkcijo ali razredom, lahko negativno vpliva na objektno orientiran okvir, saj oslabi kapsulacija kar je proti objektno usmerjen paradigma. To je razlog, da je treba funkcijo prijatelja uporabljati pametno, sicer bi lahko zlom the skrivanje podatkov kode.

Ta funkcija prijatelja ni nobena komutative in niti prehodno. X je Y-jev prijatelj, ne sklepa, da je Y tudi prijatelj X. Če je X prijatelj Y in Y je prijatelj Z, ne pomeni, da je X prijatelj Z.


    1. Primerjalna tabela
    2. Opredelitev
    3. Ključne razlike
    4. Zaključek

Primerjalna tabela

Osnove za primerjavoPrijateljeva funkcijaRazred prijateljev
OsnovniTo je funkcija, ki se uporablja s ključno besedo prijatelj, da se nečlanskim funkcijam omogoči dostop zasebnim članom razreda.To je razred, ki se uporablja s ključno besedo prijatelj za dostop do zasebnih članov drugega razreda.
Posredujoča izjavaUporabiti ga je treba.Ni obvezno.
UporabaPrijateljska funkcija se lahko uporablja v nekaterih primerih preobremenitve operaterja.Razred prijateljev je mogoče uporabiti, če je razred ustvarjen na vrhu drugega razreda.

Opredelitev funkcije prijatelja

The funkcija prijatelja se uporablja za dostop do zasebnih in zaščitenih članov razreda, tako da dovoli nečlanski funkciji dostop. Pri tej vrsti funkcije se pred imenom funkcije ob deklaraciji uporablja ključna beseda friend. Za funkcijo prijatelja veljajo nekateri omejevalni pogoji. Prvi pogoj je, da funkcije prijatelja ne deduje razred otrok. Drugi pogoj je, da specifikator pomnilniškega razreda morda ni prisoten v funkciji friend, kar pomeni, da ga ni mogoče razglasiti kot statičnega in zunanjega.


Funkcija friend se ne prikliče s priklicnim predmetom razreda. Primeri funkcije prijatelja so: globalna funkcija, funkcija člana razreda, predloga funkcije je lahko funkcija prijatelja. Razložimo s pomočjo primera.

#include uporaba imenskega prostora std; prvi razred {int podatki; javni: prvi (int i): podatki (i) {} prikazovanje neveljavnosti prijateljev (prvo const & a); }; neveljaven prikaz (const first & a) {cout << "data =" <z uporabo imenskega prostora std; razred prvi {// Razglasite prijatelja prijatelja razred razreda Drugi; javni: First (): a (0) {} void () {cout << "Rezultat je" << a << endl; } zasebno: int a; }; razred drugi {javni: nična sprememba (First & yclass, int x) {yclass.a = x; }}; int main () Prvi obj1; Drugi obj2; obj1. (); obj2.change (obj1, 5); obj1. (); // Izhod Rezultat je 0 Rezultat je 5

  1. Prijateljska funkcija je funkcija, ki lahko dostopa do zasebnih in zaščitenih članov razreda. V nasprotju s tem je razred prijateljev razred, ki pomaga pri dostopu do zasebnih članov razreda.
  2. Prijateljsko funkcijo razglasi tako, da v svoj razred vključi prototip in ga prikaže s ključno besedo prijatelj. Podobno je določen tudi razred prijatelja s pomočjo ključne besede friend.
  3. Posredna deklaracija se uporablja v primeru funkcije prijatelja v nasprotju, ni je treba uporabljati v razredu prijateljev.

Zaključek

Prijateljska funkcija je potrebna, kadar mora funkcija dostopati do dveh ali več neodvisnih razredov, notranjih članov. Po drugi strani pa je razred prijatelja potreben, kadar razred zahteva dostop do članov drugega razreda. Kadar mora biti funkcija številnih članov prijatelj te funkcije, je v tem primeru bolje uporabiti razred prijatelja.