Priporočena, 2022

Izbira Urednika

Razlika med funkcijo prijatelja in razredom prijateljev

Funkcija Friend in razred prijatelja sta tehniki, ki se uporabljata za dostop do zasebnih članov razreda z uporabo ključne besede prijatelja. Skupna razlika med funkcijo prijatelja in razredom prijateljev je, da ko uporabimo funkcijo prijatelja, lahko dostopamo do zasebnih članov razreda, v razredu prijateljev pa dostopamo le do imen prijateljevih razredov, ne do zasebnih članov razreda.

Funkcija za prijatelje, ki jo uporablja funkcija ali razred, lahko negativno vpliva na objektno usmerjen okvir, saj oslabi enkapsulacijo, ki je proti objektno usmerjeni paradigmi. To je razlog, zakaj je treba funkcijo prijatelja uporabiti pametno, sicer bi lahko prekinila skrivanje podatkov kode.

Ta prijateljska lastnost ni niti komutativna niti prehodna . X je prijatelj Y in ne sklepa, da je Y tudi prijatelj X. Če je X prijatelj Y in Y je Z prijatelj, ne pomeni, da je X prijatelj Z.

Primerjalna tabela

Podlaga za primerjavoFunkcija prijateljaRazred prijateljev
OsnovnoGre za funkcijo, ki se uporablja s ključno besedo prijatelja, ki dodeli nečlanskemu dostopu do zasebnih članov razreda.To je razred, ki se uporablja s ključno besedo prijatelja za dostop do zasebnih članov drugega razreda.
Naprej deklaracijaUporabiti je treba.Ni obvezno.
UporabaFunkcija prijatelja se lahko uporablja v nekaterih primerih preobremenitve operaterja.Skupina prijateljev se lahko uporabi, ko je razred ustvarjen na vrhu drugega razreda.

Opredelitev funkcije prijateljev

Funkcija prijatelja se uporablja za dostop do zasebnih in zaščitenih članov razreda tako, da omogoči dostop nečlanski funkciji. Pri tej vrsti funkcije se ključna beseda prijatelja uporablja pred imenom funkcije v času deklaracije. Za funkcijo prijateljev veljajo nekateri omejevalni pogoji. Prvi pogoj je, da funkcijo prijatelja ne podeduje otroški razred. Drugi pogoj je, da specifikacija razreda skladiščnika morda ni prisotna v funkciji prijatelja, kar pomeni, da je ni mogoče deklarirati kot statična in zunanja.

Funkcija prijatelja se ne pokliče s predmetom, ki kliče razred. Primeri funkcij prijateljev so: globalna funkcija, funkcija člana razreda, funkcija predloga je lahko funkcija prijatelja. Razumimo ga s pomočjo primera.

 #include using namespace std; prvi razred {int data; public: najprej (int i): data (i) {} prijatelj void display (const first & a); }; void prikaz (const first & a) {cout << "data =" < 

Opredelitev razreda prijateljev

Podobno kot prijateljska funkcija lahko naredimo en razred za prijatelja drugega razreda, ki se imenuje prijateljski razred . Tako lahko prijateljski razred pridobi dostop do zasebnih članov, definiranih v drugem razredu. Pomembno je vedeti, da lahko prijateljski razred dostopa samo do imen, definiranih v drugem razredu, namesto dedovanja drugega razreda. Ravno člani prvega razreda ne morejo postati člani razreda prijatelja. Ti razredi prijateljev se redko uporabljajo.

Razred prijatelja lahko deklariramo v več kot enem razredu. Šteje se za kratko alternativno metodo za funkcijo prijatelja, saj lahko s pomočjo tega ustvarimo razred prijatelja, ki lahko dostopa do celotnih podatkovnih članov in deluje namesto ustvarjanja več funkcij prijateljev.

 #include using namespace std; class First {// razglasi razredu prijatelja prijatelja razreda Second; public: Prvo (): a (0) {} void print () {cout << "Rezultat je" << a << endl; } private: int a; }; Razred Second {public: void change (prva & yclass, int x) {yclass.a = x; }}; int main () // Izhod Rezultat je 0 Rezultat je 5 

Ključne razlike med funkcijo prijatelja in razredom prijateljev

  1. Funkcija prijatelja je funkcija, ki lahko dostopa do zasebnih in zaščitenih članov razreda. Nasprotno pa je prijateljski razred razred, ki pomaga pri dostopu do zasebnih članov razreda.
  2. Funkcija prijatelja je razglašena z vključitvijo svojega prototipa v razred, s pomočjo ključne besede prijatelj. Podobno je razred prijatelja definiran tudi s ključno besedo prijatelj.
  3. Napovedna deklaracija se uporablja v primeru, da je prijateljska funkcija v nasprotju, ni ga treba uporabljati v razredu prijateljev.

Zaključek

Funkcija prijatelja je potrebna, ko funkcija potrebuje dostop do dveh ali več neodvisnih razredov, notranjih članov. Po drugi strani pa je potreben razred prijatelja, kadar razred zahteva dostop do članov drugega razreda. Če mora biti funkcija večih članov prijatelj te funkcije, je v tem primeru bolje uporabiti razred prijatelja.

Top