friend functions c
Ulteriori informazioni sulle funzioni Friend in C ++ con esempi.
Il C ++ supporta la funzionalità di incapsulamento in cui i dati vengono raggruppati insieme alle funzioni che operano su di esso per formare una singola unità. In questo modo il C ++ assicura che i dati siano accessibili solo dalle funzioni che operano su di esso e non da chiunque sia esterno alla classe.
Questa è una delle caratteristiche distintive del C ++ che preserva i dati e impedisce che fuoriescano dal mondo esterno.
=> Leggere la serie di formazione Easy C ++.
Ma in alcune applicazioni in tempo reale, a volte potremmo voler accedere ai dati al di fuori dell'unità in bundle. Ad esempio, una classe esterna potrebbe voler accedere a dati privati e protetti di una classe C ++.
C ++ fornisce una struttura per accedere a dati privati e protetti per mezzo di una caratteristica speciale chiamata funzione o classe 'amico' di cui parleremo qui in questo tutorial.
Cosa imparerai:
- Funzione Friend in C ++
- Esempio di una funzione amico
- Classe di amici
- Vantaggi / svantaggi della funzione Friend
- Conclusione
- Lettura consigliata
Funzione Friend in C ++
Una funzione amico in C ++ è una funzione preceduta dalla parola chiave 'amico'. Quando la funzione viene dichiarata come amico, può accedere ai membri dati privati e protetti della classe.
Una funzione amico viene dichiarata all'interno della classe con una parola chiave amico che precede come mostrato di seguito.
class className{ …… friend returnType functionName(arg list); };
Come mostrato sopra, la funzione friend viene dichiarata all'interno della classe a cui si deve accedere ai membri di dati privati e protetti. La funzione può essere definita ovunque nel file di codice e non è necessario utilizzare la parola chiave friend o l'operatore di risoluzione dell'ambito.
Ci sono alcuni punti da ricordare durante l'implementazione delle funzioni di amicizia nel nostro programma:
- Una funzione amico può essere dichiarata nella sezione privata o pubblica della classe.
- Può essere chiamato come una normale funzione senza utilizzare l'oggetto.
- Una funzione amico non rientra nell'ambito della classe, di cui è amico.
- Una funzione amico non viene invocata utilizzando l'oggetto classe in quanto non è nell'ambito della classe.
- Una funzione amico non può accedere direttamente ai membri dei dati privati e protetti della classe. Deve utilizzare un oggetto classe e quindi accedere ai membri utilizzando l'operatore punto.
- Una funzione amico può essere una funzione globale o un membro di un'altra classe.
Esempio di una funzione amico
Implementiamo un esempio di programmazione per comprendere meglio l'utilizzo della funzione Friend.
#include #include using namespace std; class sample{ int length, breadth; public: sample(int length, int breadth):length(length),breadth(breadth) {} friend void calcArea(sample s); //friend function declaration }; //friend function definition void calcArea(sample s){ cout<<'Area = '< Produzione:
Area = 150
Nel programma sopra, abbiamo un campione di classe con membri privati in lungo e in largo. Abbiamo un costruttore pubblico che inizializza i valori di lunghezza e larghezza. Successivamente, abbiamo una funzione amico 'calcArea' che calcola l'area tenendo conto della lunghezza e della larghezza.
Nota che calcArea è una funzione amico e non fa parte della classe. Nella funzione main, dopo aver creato un oggetto della classe sample, lo passiamo alla funzione calcArea che calcola l'area e ne visualizza il valore.
Classe di amici
Proprio come le funzioni di amicizia, possiamo anche tenere una lezione di amicizia. La classe amico può accedere ai membri privati e protetti della classe di cui è amico.
class A{ …… friend class B; }; class B{ …….. };
Come illustrato sopra, la classe B è amica della classe A. Quindi la classe B può accedere ai membri privati e protetti della classe A.
Ma questo non significa che la classe A possa accedere a membri privati e protetti della classe B. Nota che l'amicizia non è reciproca a meno che non lo facciamo noi.
Allo stesso modo, l'amicizia della classe non viene ereditata. Ciò significa che poiché la classe B è amica della classe A, non sarà amica delle sottoclassi della classe A.
Prendiamo un esempio di programmazione per dimostrare la classe degli amici.
#include #include using namespace std; class Area{ int length,breadth,area; public: Area(int length,int breadth):length(length),breadth(breadth) {} void calcArea(){ area = length * breadth; } friend class printClass; }; class printClass{ public: void printArea(Area a){ cout<<'Area = '< Produzione:
Area = 150
software di conversione video gratuito per PC
In questo programma abbiamo due classi. La Classe “Area” che calcola l'area utilizzando i parametri di lunghezza e larghezza. Nota che i campi, l'area, la lunghezza e la larghezza sono tutti membri privati della classe Area.
La classe successiva utilizzata è 'printClass' che stampa l'area calcolata da una funzione calcArea nella classe Area. Poiché i membri sono privati, dobbiamo rendere printClass un amico della classe Area.
Fatto ciò, nella funzione main creiamo un oggetto della classe Area, calcoliamo l'area e passiamo l'oggetto alla funzione printArea della classe printClass per visualizzare l'area.
Vantaggi / svantaggi della funzione Friend
Un vantaggio della funzione o della classe friend è che possiamo accedere ai dati privati e protetti della classe. Per esempio, se stiamo implementando un elenco collegato, possiamo rendere la classe dell'elenco collegato un amico della classe del nodo e accedere ai suoi dati poiché l'elenco collegato consiste di nodi.
Pertanto, in una determinata situazione, l'utilizzo di una funzione o di una classe di amicizia può rivelarsi vantaggioso. Tuttavia, presenta anche alcuni svantaggi.
Una delle caratteristiche distintive di C ++ è l'incapsulamento, ovvero il raggruppamento di dati e funzioni che operano su tali dati insieme in modo che nessuna funzione o classe esterna possa accedere ai dati. Ma consentendo alle funzioni o alla classe Friend di accedere ai membri privati di un'altra classe, compromettiamo effettivamente la funzionalità di incapsulamento.
Per evitare ciò, dovremmo stare attenti a utilizzare le funzioni o la classe degli amici. Dobbiamo assicurarci di non utilizzare troppe funzioni e classi amici nel nostro programma che comprometteranno totalmente l'incapsulamento.
Conclusione
Questo conclude il nostro tutorial sulla funzione amico e sulle classi in C ++.
I lettori devono essere molto cauti durante l'utilizzo di classi e funzioni amico come se potesse agire come un vantaggio per il programmatore, ma deve anche essere usato con cautela poiché l'uso eccessivo di funzioni e classi amico può compromettere la caratteristica OOP dell'incapsulamento nel nostro programma.
Nel nostro prossimo tutorial, impareremo in dettaglio le funzioni statiche in C ++.
=> Visita qui per imparare C ++ da zero.
Lettura consigliata