Čo je funkcia priateľa?
Funkcia Friend je nečlenská funkcia, ktorá má prístup k súkromným a chráneným členom triedy. „Priateľ“ je kľúčové slovo používané na označenie, že funkcia je priateľom triedy. Toto umožňuje kompilátoru vedieť, že konkrétna funkcia je priateľom danej triedy. Funkcia friend by potom mala mať prístup k súkromnému a chránenému členovi danej triedy. Bez kľúčového slova friend má nečlenská externá funkcia prístup iba k verejným členom triedy.
Kľúčové vlastnosti funkcie Friend:
Tu sú kľúčové vlastnosti funkcie priateľa:
- Funkcia priateľa nie je v rozsahu tejto triedy.
- Funkciu friend nie je možné vyvolať pomocou inštancie triedy.
- Má prístup k členom pomocou operátora objektu a bodky.
Syntax funkcie priateľa:
Tu je syntax funkcie friend:
trieda Class_Name_Demo…
…
priateľ return_Type function_Name (arg_1, arg_2, ...);
;
Príklad funkcie priateľa:
Teraz sa pozrime na ukážkový program, aby sme pochopili koncept funkcie priateľa v jazyku C++. V nižšie uvedenom príklade programu máme triedu „Friend_Demo“. Má tri rôzne typy dátových členov, t.j.e., súkromné, chránené a verejné.
Definovali sme ďalšiu funkciu, t.j.e., „FriendDemo_Func ()“ mimo rozsahu triedy „Friend_Demo“ a pokúsil sa získať prístup k členom (súkromným, chráneným a verejným) triedy „Friend_Demo“.
Ako však vidíte na výstupe nižšie, keď kompilujeme program, vrhá to chyby kompilácie. Funkcia priateľa tento problém presne vyrieši.
#includepomocou namespace std;
trieda Friend_Demo
súkromné:
int i_private;
chránené:
int i_protected;
verejné:
int i_public;
;
void friendDemo_Func ()
Friend_Demo fd;
fd.i_private = 10;
fd.i_protected = 15;
fd.i_public = 20;
cout << fd.i_private << endl;
cout << fd.i_protected << endl;
cout << fd.i_public << endl;
int main ()
friendDemo_Func ();
návrat 0;
V predchádzajúcom programe sme dostávali chyby kompilácie pri pokuse o prístup k súkromným, chráneným a verejným členom triedy z nečlenskej funkcie. Je to preto, že nečlenská funkcia nemá povolený prístup k súkromným a chráneným členom triedy mimo rozsahu triedy.
Teraz sme v tomto príklade deklarovali funkciu „friendDemo_Func ()“ ako priateľa v rámci triedy, i.e., „Friend_Demo“:
friend void friendDemo_Func ();Vytvorili sme objekt, t.j.e., „Fd“ triedy „Friend_Demo“ vo vnútri funkcie „friendDemo_Func ()“. Teraz môžeme pomocou operátora bodka získať prístup k súkromným, chráneným a verejným členom triedy „Friend_Demo“. Priradili sme 10, 15 a 20 k i_private, i_protected a i_public.
Ako vidíte na výstupe nižšie, tento program je teraz zostavený a vykonaný bez akýchkoľvek chýb a výstup je vytlačený podľa očakávania.
#includepomocou namespace std;
trieda Friend_Demo
súkromné:
int i_private;
chránené:
int i_protected;
verejné:
int i_public;
friend void friendDemo_Func ();
;
void friendDemo_Func ()
Friend_Demo fd;
fd.i_private = 10;
fd.i_protected = 15;
fd.i_public = 20;
cout << fd.i_private << endl;
cout << fd.i_protected << endl;
cout << fd.i_public << endl;
int main ()
friendDemo_Func ();
návrat 0;
Záver:
V tomto článku som vysvetlil koncept funkcie priateľa v jazyku C++. Ukázal som tiež dva pracovné príklady, ktoré vysvetľujú, ako sa funkcia friend chová v jazyku C++. V zložitom programovacom prostredí môže byť funkcia priateľa niekedy veľmi užitočná. Programátor by však mal byť opatrný pri jeho nadmernom používaní a ohrození funkcií OOP.