Mi a barát funkciója?
A Friend funkció egy nem tag funkció, amely hozzáférhet egy osztály privát és védett tagjaihoz. A „Friend” egy olyan kulcsszó, amelyet arra használnak, hogy jelezze, hogy egy funkció egy osztály barátja. Ez lehetővé teszi a fordító számára, hogy megtudja, hogy az adott függvény az adott osztály ismerőse. A barát funkciónak ekkor képesnek kell lennie arra, hogy hozzáférjen az adott osztály privát és védett tagjához. A barát kulcsszó nélkül a nem tag külső funkció csak az osztály nyilvános tagjaihoz férhet hozzá.
A Friend funkció főbb jellemzői:
Itt vannak a barát funkció legfontosabb jellemzői:
- A barát funkció nem tartozik az osztály körébe.
- A barát funkciót nem lehet meghívni egy osztály példányával.
- Az objektum és a dot operátor segítségével érheti el a tagokat.
A Friend funkció szintaxisa:
Itt van a friend függvény szintaxisa:
osztály Class_Name_Demo…
…
friend return_Type függvény_neve (arg_1, arg_2,…);
;
Példa a Friend funkcióra:
Most nézzünk meg egy példaprogramot, hogy megértsük a C barátfüggvény fogalmát++. Az alábbi példaprogramban megvan a „Friend_Demo” osztály. Három különböző típusú adattaggal rendelkezik, azaz.e., magán, védett és nyilvános.
Meghatároztunk egy másik függvényt, azaz.e., A „friendDemo_Func ()” nem tartozik a „Friend_Demo” osztály körébe, és megpróbálta elérni a „Friend_Demo” osztály tagjait (magán, védett és nyilvános).
De amint az alábbi kimeneten látható, amikor a programot lefordítjuk, fordítási hibákat dob. A barát funkció pontosan megoldja ezt a problémát.
#includenévtér használata std;
osztály Friend_Demo
magán:
int i_private;
védett:
int i_védett;
nyilvános:
int i_public;
;
void friendDemo_Func ()
Friend_Demo fd;
fd.i_private = 10;
fd.védett = 15;
fd.i_public = 20;
cout << fd.i_private << endl;
cout << fd.i_protected << endl;
cout << fd.i_public << endl;
int main ()
friendDemo_Func ();
visszatér 0;
Az előző programban fordítási hibákat észleltünk, amikor megpróbáltuk elérni egy osztály privát, védett és nyilvános tagjait egy nem tag függvényből. Ennek oka, hogy a tagsággal nem rendelkező funkció nem fér hozzá az osztály magán- és védett tagjaihoz az osztály hatókörén kívülről.
Ebben a példában a “friendDemo_Func ()” függvényt deklaráltuk barátként az osztály hatókörén belül, i.e., „Friend_Demo”:
friend void friendDemo_Func ();Létrehoztunk egy tárgyat, azaz.e., A „Friend_Demo” osztály „fd” a „friendDemo_Func ()” függvényen belül. Most hozzáférhetünk a „Friend_Demo” osztály magán-, védett és nyilvános tagjaihoz a dot operátor segítségével. 10, 15 és 20 rendszert rendeltünk az i_private, az i_protected és az i_public kategóriákba.
Amint az az alábbi kimeneten látható, ez a program most hibátlanul lefordításra és végrehajtásra kerül, és a kimenetet a várt módon kinyomtatja.
#includenévtér használata std;
osztály Friend_Demo
magán:
int i_private;
védett:
int i_védett;
nyilvános:
int i_public;
friend void friendDemo_Func ();
;
void friendDemo_Func ()
Friend_Demo fd;
fd.i_private = 10;
fd.védett = 15;
fd.i_public = 20;
cout << fd.i_private << endl;
cout << fd.i_protected << endl;
cout << fd.i_public << endl;
int main ()
friendDemo_Func ();
visszatér 0;
Következtetés:
Ebben a cikkben kifejtettem a barát funkciójának fogalmát a C-ben++. Két működő példát is bemutattam annak magyarázatára, hogy a barát funkció hogyan viselkedik C-ben++. Néha a barát funkció nagyon hasznos lehet egy összetett programozási környezetben. A programozónak azonban óvatosnak kell lennie a túlzott használatával és az OOP funkcióinak veszélyeztetésével szemben.