Recomandat, 2024

Alegerea Editorului

Diferența dintre funcția Friend și clasa Friend

Funcția Friend și clasa prieten sunt tehnicile folosite pentru a accesa membrii particulari ai unei clase folosind cuvântul cheie prieten. Diferența obișnuită dintre funcția de prietenie și clasa prieten este că, atunci când se folosește funcția de prietenie, membrii clasei private pot fi accesați, dar în clasa prietenilor, doar numele clasei prietenului nu sunt accesate de membrii privați ai clasei.

Funcția prietenului dacă este folosită de funcție sau de clasă poate produce un impact negativ asupra cadrului orientat pe obiecte, deoarece slăbește încapsularea care este împotriva paradigmei orientate spre obiect . Acesta este motivul pentru care funcția de prieten trebuie folosită în mod înțelept, altfel ar putea rupe ascunderea datelor din cod.

Această caracteristică a prietenului nu este nici comutativă, nici tranzitivă . X este un prieten al Y nu deduce că Y este, de asemenea, un prieten de X. Dacă X este un prieten de Y și Y este un prieten de Z, nu implică faptul că X este un prieten de Z.

Diagramă de comparație

Bazele de comparațieFuncția prietenuluiClasa prietenilor
De bazăEste o funcție folosită cu un cuvânt cheie pentru un prieten pentru a acorda unei funcții non-membru acces la membrii particulari ai unei clase.Este o clasă folosită cu un cuvânt cheie prieten pentru a accesa membrii privați ai unei alte clase.
Declaratie inainteTrebuie sa fie folosit.Nu este obligatorie.
UtilizareO funcție prieten poate fi utilizată în anumite situații de supraîncărcare a operatorului.O clasă de prieteni poate fi utilizată atunci când o clasă este creată în partea de sus a unei alte clase.

Definiția Friend Function

Funcția prieten este utilizată pentru a accesa membrii privați și protejați ai unei clase, permițând accesul funcției care nu este membră. În acest tip de funcție, un cuvânt cheie prieten este folosit înainte de numele funcției în momentul declarației. Există câteva condiții restrictive aplicate funcției prietenului. Prima condiție este că funcția de prietenie nu este moștenită de o clasă de copii. A doua condiție este că specificatorul clasei de stocare poate să nu fie prezent în funcția de prieten, ceea ce înseamnă că nu poate fi declarat static și extern.

Funcția prieten nu este apelată cu un obiect invocator al clasei. Exemplele funcției de prietenie sunt: ​​o funcție globală, funcția membră a unei clase, șablonul de funcție poate fi o funcție prietenă. Să înțelegem asta cu ajutorul unui exemplu.

 # include folosind namespace std; prima clasa {int data; public (primul) (int i): date (i) {} prieten void display (const primul & a); }; void display (const primul & a) {cout << "data =" < 

Definiția Friend Class

Similar cu funcția de prietenie putem face o clasă să fie un prieten de altă clasă care este numită clasă prieten . Pentru ca clasa prietenă să poată avea acces la membrii privați definiți în cadrul celeilalte clase. Este important să ne amintim că această clasă prietenă poate accesa numai numele definite în cadrul celeilalte clase, în loc să moștenească altă clasă. Într-adevăr, membrii primei clase nu pot deveni membrii clasei prietenului. Aceste clase de prieteni sunt rareori folosite.

Clasa prieten poate fi declarată în mai mult de o singură clasă. Este considerată ca o metodă alternativă scurtă pentru funcția de prietenie, deoarece cu ajutorul acesteia putem crea o clasă prietenă care să poată accesa toți membrii de date și să funcționeze în loc să creeze mai multe funcții de prietenie.

 # include folosind namespace std; clasa Prima {// Declararea unei clase prieten prieten de clasă A doua; public: Primul (): a (0) {} void print () {cout << "Rezultatul este" << a << endl; } privat: int a; }; clasa a doua {public: void change (prima & yclass, int x) {yclass.a = x; }}; int main () // Output Rezultatul este 0 Rezultatul este 5 

Diferențe cheie între funcția Friend și clasa Friend

  1. Funcția prieten este o funcție care poate accesa membrii privați și protejați ai unei clase. În schimb, o clasă prietenă este o clasă care ajută la accesarea membrilor privați ai unei clase.
  2. O funcție prieten este declarată prin includerea prototipului său în interiorul clasei, precedându-l cu cuvântul cheie prieten. În mod similar, o clasă prietenă este, de asemenea, definită folosind un cuvânt cheie prieten.
  3. Declarația în avans este utilizată în cazul în care funcția de prietenie este împotriva, nu este necesar să o utilizați în clasa prietenilor.

Concluzie

Este necesară o funcție de prietenie atunci când o funcție are nevoie să acceseze două sau mai multe clase independente, membri interni. Pe de altă parte, este necesară o clasă prietenă atunci când o clasă necesită accesarea membrilor unei alte clase. Atunci când o funcție multiplă trebuie să fie o prietenă a acelei funcții, în acest caz, este mai bine să folosiți clasa prietenilor.

Top