Differenza tra funzione amico e classe amico

Autore: Laura McKinney
Data Della Creazione: 1 Aprile 2021
Data Di Aggiornamento: 5 Maggio 2024
Anonim
FRIEND FUNCTION VS REGULAR FUNCTION (FRIEND FUNCTION TOTALLY EXPLAINED)-36
Video: FRIEND FUNCTION VS REGULAR FUNCTION (FRIEND FUNCTION TOTALLY EXPLAINED)-36

Contenuto


La funzione Amico e la classe amico sono le tecniche utilizzate per accedere ai membri privati ​​di una classe utilizzando la parola chiave amico. La differenza comune tra la funzione amico e la classe amico è che quando si utilizza la funzione amico, è possibile accedere ai membri della classe privata, ma nella classe amico si accede solo ai nomi della classe amico e non ai membri privati ​​della classe.

Il funzione amico se utilizzato dalla funzione o dalla classe può produrre un impatto negativo sul framework orientato agli oggetti in quanto indebolisce incapsulamento che è contro il orientato agli oggetti paradigma. Questo è il motivo per cui la funzione amico deve essere usata saggiamente altrimenti potrebbe rompere il nascondere i dati del codice.

Questa funzione amico non è né commutativo e né transitivo. X è un amico di Y non deduce che Y sia anche un amico di X. Se X è un amico di Y e Y è un amico di Z, non implica che X sia un amico di Z.


    1. Tabella di comparazione
    2. Definizione
    3. Differenze chiave
    4. Conclusione

Tabella di comparazione

Base per il confrontoFunzione amicoClasse di amici
Di baseÈ una funzione utilizzata con una parola chiave friend per concedere a una funzione non membro l'accesso ai membri privati ​​di una classe.È una classe utilizzata con una parola chiave friend per accedere ai membri privati ​​di un'altra classe.
Dichiarazione in avantiDeve essere usato.Non obbligatorio.
UsoUna funzione amico può essere utilizzata in alcune situazioni di sovraccarico dell'operatore.Una classe di amici può essere utilizzata quando una classe viene creata in cima a un'altra classe.

Definizione della funzione amico

Il funzione amico viene utilizzato per accedere ai membri privati ​​e protetti di una classe consentendo l'accesso alla funzione non membro. In questo tipo di funzione, viene utilizzata una parola chiave friend prima del nome della funzione al momento della dichiarazione. Ci sono alcune condizioni restrittive applicate alla funzione amico. La prima condizione è che la funzione amico non sia ereditata da una classe figlio. La seconda condizione è che l'identificatore della classe di archiviazione potrebbe non essere presente nella funzione amico, il che significa che non può essere dichiarato come statico ed esterno.


La funzione amico non viene chiamata con un oggetto invocante della classe. Gli esempi di funzione amico sono: una funzione globale, la funzione membro di una classe, il modello di funzione può essere una funzione amico. Comprendiamolo con l'aiuto di un esempio.

#includere usando lo spazio dei nomi std; prima classe {int data; public: first (int i): data (i) {} display vuoto amico (const first & a); }; void display (const first & a) {cout << "data =" <usando lo spazio dei nomi std; class First {// Dichiara un amico class friend class Second; public: First (): a (0) {} void () {cout << "Il risultato è" << a << endl; } privato: int a; }; class Second {public: void change (First & yclass, int x) {yclass.a = x; }}; int main () Primo obj1; Secondo obj2; obj1 ().; obj2.change (obj1, 5); obj1 ().; // Output Il risultato è 0 Il risultato è 5

  1. La funzione Amico è una funzione in grado di accedere ai membri privati ​​e protetti di una classe. Al contrario, una classe di amici è una classe che aiuta ad accedere ai membri privati ​​di una classe.
  2. Una funzione amico viene dichiarata includendo il suo prototipo all'interno della classe, precedendola con la parola chiave amico. Allo stesso modo, anche una classe di amici viene definita usando la parola chiave amico.
  3. La dichiarazione diretta viene utilizzata in caso di funzione amico rispetto a, non è necessario utilizzarla nella classe amico.

Conclusione

È necessaria una funzione amico quando una funzione deve accedere a due o più classi indipendenti, membri interni. D'altra parte, è necessaria una classe di amici quando una classe richiede l'accesso ai membri di un'altra classe. Quando una funzione con più membri deve essere amica di quella funzione, in quel caso è meglio usare la classe friend.