friend functions c
Obteniu més informació sobre les funcions d'amics en C ++ amb exemples.
C ++ admet la característica d'encapsulació en què les dades s'agrupen junt amb les funcions que hi operen per formar una sola unitat. Fent això, C ++ garanteix que les dades només siguin accessibles per les funcions que hi operen i no per a ningú de fora de la classe.
Aquesta és una de les característiques distintives de C ++ que preserva les dades i impedeix la seva filtració al món exterior.
=> Llegiu la sèrie de formació Easy C ++.
Però en algunes aplicacions en temps real, de vegades és possible que vulguem accedir a dades fora de la unitat inclosa. Per exemple, una classe foraster pot voler accedir a dades privades i protegides d'una classe C ++.
C ++ proporciona una facilitat per accedir a dades privades i protegides mitjançant una característica especial anomenada funció o classe 'amic' que parlarem aquí en aquest tutorial.
Què aprendreu:
- Funció Friend a C ++
- Exemple de funció d'amic
- Classe d’Amics
- Avantatges / desavantatges de la funció amic
- Conclusió
- Lectura recomanada
Funció Friend a C ++
Una funció amic a C ++ és una funció que va precedida de la paraula clau 'amic'. Quan la funció es declara com a amiga, pot accedir als membres de dades privades i protegides de la classe.
Una funció amic es declara dins de la classe amb una paraula clau amiga precedent com es mostra a continuació.
class className{ …… friend returnType functionName(arg list); };
Com es mostra més amunt, la funció amic es declara dins de la classe als membres dels quals es accedeix a les dades privades i protegides. La funció es pot definir a qualsevol lloc del fitxer de codi i no cal que utilitzem la paraula clau friend ni la resolució d’àmbit, operador.
Hi ha alguns punts que cal recordar en implementar funcions d’amics al nostre programa:
- Es pot declarar una funció amic a la secció privada o pública de la classe.
- Es pot anomenar com una funció normal sense utilitzar l'objecte.
- Una funció amiga no és dins de l’abast de la classe, de la qual és amiga.
- Una funció amic no s'invoca mitjançant l'objecte class ja que no es troba dins de l'abast de la classe.
- Una funció amic no pot accedir directament a les dades privades i protegides membres de la classe. Ha de fer ús d’un objecte de classe i després accedir als membres mitjançant l’operador de punts.
- Una funció amiga pot ser una funció global o un membre d'una altra classe.
Exemple de funció d'amic
Implantem un exemple de programació per entendre millor l'ús de Friend Function.
#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 = '< Sortida:
Àrea = 150
Al programa anterior, tenim una mostra de classe amb longitud i amplitud de membres privats. Tenim un constructor públic que inicialitza els valors de longitud i amplada. A continuació, tenim una funció amiga 'calcArea' que calcula l'àrea tenint en compte la longitud i l'amplada.
Tingueu en compte que calcArea és una funció amiga i no forma part de la classe. A la funció principal, després de crear un objecte de la mostra de classe, el passem a la funció calcArea que calcula l'àrea i mostra el valor.
Classe d’Amics
Igual que les funcions d'amistat, també podem tenir una classe d'amics. La classe Friend pot accedir a membres privats i protegits de la classe a la qual és amic.
class A{ …… friend class B; }; class B{ …….. };
Com es mostra més amunt, la classe B és amiga de la classe A. Així, la classe B pot accedir als membres privats i protegits de la classe A.
Però això no vol dir que la classe A pugui accedir a membres privats i protegits de la classe B. Tingueu en compte que l'amistat no és mútua tret que ho fem així.
De la mateixa manera, l'amistat de la classe no s'hereta. Això significa que, com que la classe B és amiga de la classe A, no serà amiga de les subclasses de la classe A.
Prenguem un exemple de programació per demostrar la classe amiga.
#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 = '< Sortida:
Àrea = 150
preguntes d’entrevistes d’oracle sql per a persones experimentades
En aquest programa, tenim dues classes. La classe 'Àrea' que calcula l'àrea utilitzant els paràmetres de longitud i amplada. Tingueu en compte que els camps, l'àrea, longitud i amplada són membres privats de l'àrea de la classe.
La següent classe que s'utilitza és la 'printClass' que imprimeix l'àrea calculada per una funció calcArea a la classe Area. Com que els membres són privats, hem de fer que PrintClass sigui un amic de la classe Area.
Un cop fet això, a la funció principal creem un objecte de la classe Àrea, calculem l'àrea i passem l'objecte a la funció printArea de la classe printClass per mostrar l'àrea.
Avantatges / desavantatges de la funció amic
Un dels avantatges de la funció o classe amic és que podem accedir a les dades privades i protegides de la classe. Per exemple, si implementem una llista enllaçada, podem fer la classe de llista enllaçada com a amic de la classe de node i accedir a les seves dades ja que la llista enllaçada consta de nodes.
Així, en una determinada situació, utilitzar una funció o classe amic pot resultar avantatjós. Tot i això, també presenta alguns desavantatges.
Una de les característiques distintives de C ++ és l’encapsulació, és a dir, l’agrupació de dades i funcions que operen en aquestes dades de manera que cap funció o classe externa pugui accedir a les dades. Però en permetre que les funcions o la classe amic accedeixin als membres privats d’una altra classe, en realitat comprometem la funció d’encapsulació.
Per evitar-ho, hem de tenir precaució a l’hora d’utilitzar les funcions o classes d’amics. Hem d’assegurar-nos que no utilitzem massa funcions i classes d’amics al nostre programa, cosa que comprometrà totalment l’encapsulació.
Conclusió
D’aquesta manera es conclou el nostre tutorial sobre les funcions i classes d’amics en C ++.
Els lectors han de ser molt cautelosos mentre fan servir classes i funcions d’amics com si poguessin actuar com un avantatge per al programador, també s’ha d’utilitzar amb precaució, ja que l’ús excessiu de funcions i classes d’amics pot comprometre la característica OOP d’encapsulació del nostre programa.
Al nostre proper tutorial, coneixerem detalladament les funcions estàtiques en C ++.
=> Visiteu aquí per aprendre C ++ des de zero.
Lectura recomanada