Kas ir drauga funkcija?
Drauga funkcija ir funkcija, kas nav dalībniece, un kas var piekļūt klases privātajiem un aizsargātajiem dalībniekiem. “Draugs” ir atslēgvārds, ko lieto, lai norādītu, ka funkcija ir klases draugs. Tas ļauj sastādītājam uzzināt, ka konkrētā funkcija ir dotās klases draugs. Tad drauga funkcijai vajadzētu būt iespējai piekļūt konkrētās klases privātajam un aizsargātajam loceklim. Bez drauga atslēgvārda ārpuses funkcija, kas nav dalībniece, var piekļūt tikai klases publiskajiem dalībniekiem.
Drauga funkcijas galvenās iezīmes:
Šeit ir galvenās drauga funkcijas iezīmes:
- Drauga funkcija nav klases darbības sfērā.
- Drauga funkciju nevar izsaukt, izmantojot klases instanci.
- Tas var piekļūt dalībniekiem, izmantojot objektu un punktu operatoru.
Drauga funkcijas sintakse:
Šeit ir drauga funkcijas sintakse:
klase Class_Name_Demo…
…
draugs return_Type function_Name (arg_1, arg_2,…);
;
Drauga funkcijas piemērs:
Tagad apskatīsim programmas piemēru, lai izprastu drauga funkcijas jēdzienu C++. Zemāk esošajā programmas piemērā mums ir klase “Friend_Demo”. Tam ir trīs dažādi datu biedru veidi, t.i.e., privāta, aizsargāta un publiska.
Mēs esam definējuši vēl vienu funkciju, t.i.e., “FriendDemo_Func ()” ārpus klases “Friend_Demo” darbības jomas un mēģināja piekļūt klases “Friend_Demo” dalībniekiem (privātiem, aizsargātiem un publiskiem).
Bet, kā redzat zemāk esošajā izvadā, kad mēs apkopojam programmu, tas rada kompilācijas kļūdas. Drauga funkcija precīzi atrisinās šo problēmu.
# iekļautizmantojot nosaukumvietu std;
klase Draugs_Demo
Privāts:
int i_private;
aizsargāts:
int i_aizsargāts;
publiski:
int i_public;
;
void friendDemo_Func ()
Friend_Demo fd;
fd.i_privatais = 10;
fd.i_aizsargāts = 15;
fd.i_public = 20;
cout << fd.i_private << endl;
cout << fd.i_protected << endl;
cout << fd.i_public << endl;
int main ()
friendDemo_Func ();
atgriešanās 0;
Iepriekšējā programmā mēs mēģinājām piekļūt klases privātajiem, aizsargātajiem un publiskajiem locekļiem, izmantojot funkciju, kas nav dalībniece, mēs sastādījām kļūdas kompilācijā. Tas ir tāpēc, ka funkcijai, kas nav dalībniece, nav atļauts piekļūt klases privātajiem un aizsargātajiem dalībniekiem ārpus klases darbības jomas.
Šajā piemērā mēs esam paziņojuši, ka funkcija “friendDemo_Func ()” ir draugs klases darbības sfērā, t.e., “Friend_Demo”:
friend void friendDemo_Func ();Mēs esam izveidojuši objektu, t.i.e., Funkcijas “friendDemo_Func ()” iekšpusē “Friend_Demo” klases “fd”. Tagad mēs varam piekļūt klases “Friend_Demo” privātajiem, aizsargātajiem un publiskajiem dalībniekiem, izmantojot punktu operatoru. Mēs esam piešķīruši attiecīgi 10, 15 un 20 i_private, i_protected un i_public.
Kā redzat zemāk esošajā izvadē, šī programma tagad tiek apkopota un izpildīta bez kļūdām un izdrukā izvadi, kā paredzēts.
# iekļautizmantojot nosaukumvietu std;
klase Draugs_Demo
Privāts:
int i_private;
aizsargāts:
int i_aizsargāts;
publiski:
int i_public;
friend void friendDemo_Func ();
;
void friendDemo_Func ()
Friend_Demo fd;
fd.i_privatais = 10;
fd.i_aizsargāts = 15;
fd.i_public = 20;
cout << fd.i_private << endl;
cout << fd.i_protected << endl;
cout << fd.i_public << endl;
int main ()
friendDemo_Func ();
atgriešanās 0;
Secinājums:
Šajā rakstā es esmu izskaidrojis drauga funkcijas jēdzienu C++. Esmu parādījis arī divus piemērus, lai izskaidrotu, kā drauga funkcija darbojas C++. Dažreiz drauga funkcija var būt ļoti noderīga sarežģītā programmēšanas vidē. Tomēr programmētājam vajadzētu būt piesardzīgam pret tā pārmērīgu izmantošanu un OOP funkciju apdraudēšanu.