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

Autor: Laura McKinney
Data Creației: 1 Aprilie 2021
Data Actualizării: 17 Mai 2024
Anonim
La ce vârstă o iau razna femeile și bărbații
Video: La ce vârstă o iau razna femeile și bărbații

Conţinut


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

caracteristică prieten indiferent dacă este folosit de funcție sau clasă poate produce un impact negativ asupra cadrului orientat obiect, deoarece acesta slăbește încapsulare care este împotriva orientate-obiect paradigmă. Acesta este motivul pentru care funcția de prieten trebuie folosită cu înțelepciune, altfel s-ar putea pauză ascunderea datelor a codului.

Această caracteristică de prieten nu este nici una comutabil și nici tranzitiv. X este un prieten al lui Y nu deduce că Y este și un prieten al lui X. Dacă X este un prieten al lui Y și Y este un prieten al lui Z, nu implică faptul că X este un prieten al lui Z.


    1. Diagramă de comparație
    2. Definiție
    3. Diferențele cheie
    4. Concluzie

Diagramă de comparație

Baza de comparațieFuncția de prietenClasa prietenului
De bazăEste o funcție utilizată cu un cuvânt cheie prieten pentru a acorda accesul unei funcții non-membre membrilor private ai unei clase.Este o clasă folosită cu un cuvânt cheie prieten pentru a accesa membrii privați ai altei clase.
Declarație înainteTrebuie sa fie folosit.Nu este obligatoriu.
UtilizareO funcție de prieten poate fi utilizată în anumite situații de supraîncărcare a operatorului.O clasă prietenă poate fi utilizată atunci când o clasă este creată în partea de sus a altei clase.

Definiția Friend Function

funcția de prieten este folosit pentru a accesa membrii privați și protejați ai unei clase, permițând funcției non-membre să obțină acces. În acest tip de funcții, se folosește un cuvânt cheie prieten înainte de numele funcției la momentul declarației. Există câteva condiții restrictive aplicate funcției de prieten. Prima condiție este ca funcția de prieten să nu fie moștenită de o clasă de copii. A doua condiție este ca specificatorul clasei de stocare să nu fie prezent în funcția de prieten, ceea ce înseamnă că nu poate fi declarat ca static și extern.


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

#include folosirea spațiului de nume std; prima clasă {int date; public: first (int i): data (i) {} prieten void afișare (const first & a); }; void display (const first & a) {cout << "data =" <folosind spațiul de nume std; class First {// Declarați un prieten de clasă prieten clasa A doua; public: First (): a (0) {} void () {cout << "Rezultatul este" << a << endl; } private: int a; }; class Second {public: void change (First & yclass, int x) {yclass.a = x; }}; int main () Primul obiect1; Al doilea obiect2; obj1 (.); obj2.change (obj1, 5); obj1 (.); // Ieșire Rezultatul este 0 Rezultatul este 5

  1. Funcția de 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 particulari ai unei clase.
  2. O funcție de 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 definită și folosind cuvântul cheie prieten.
  3. Declarația înainte este folosită în cazul funcției de prieten, contra, nu este necesar să o utilizați în clasa prieten.

Concluzie

O funcție prietenă este necesară atunci când o funcție trebuie să acceseze două sau mai multe clase independente, membri interni. Pe de altă parte, este nevoie de o clasă prietenă atunci când o clasă necesită accesarea membrilor unei alte clase. Când o funcție de membru multiplu trebuie să fie un prieten al acestei funcții, în acest caz, este mai bine să utilizați clasa prieten.