Hvad er venfunktion?
Venfunktion er en ikke-medlem-funktion, der har adgang til de private og beskyttede medlemmer af en klasse. "Ven" er et nøgleord, der bruges til at angive, at en funktion er en klasses ven. Dette gør det muligt for compileren at vide, at den særlige funktion er en ven af den givne klasse. Vennefunktionen skal derefter kunne få adgang til det private og beskyttede medlem af en given klasse. Uden vennens nøgleord kan en ikke-medlem ekstern funktion kun få adgang til de offentlige medlemmer af en klasse.
Nøglefunktioner i venfunktion:
Her er nøglefunktionerne i venfunktionen:
- En venfunktion er ikke inden for klassen.
- Venfunktionen kan ikke påberåbes ved hjælp af en forekomst af en klasse.
- Det kan få adgang til medlemmerne ved hjælp af objekt- og prikoperatoren.
Syntaks for venfunktion:
Her er syntaksen for venfunktionen:
klasse Class_Name_Demo..
..
ven return_Type funktion_Navn (arg_1, arg_2,…);
;
Eksempel på venfunktion:
Lad os nu se på et eksempelprogram for at forstå begrebet venfunktion i C++. I nedenstående eksempelprogram har vi klassen “Friend_Demo”. Det har tre forskellige typer datamedlemmer, dvs.e., privat, beskyttet og offentligt.
Vi har defineret en anden funktion, i.e., "FriendDemo_Func ()" uden for klassen "Friend_Demo" og forsøgte at få adgang til medlemmerne (private, beskyttede og offentlige) i klassen "Friend_Demo".
Men som du kan se i output nedenfor, når vi kompilerer programmet, kaster det kompileringsfejl. Vennefunktionen vil nøjagtigt løse dette problem.
#omfatteved hjælp af namespace std;
klasse Friend_Demo
privat:
int i_private;
beskyttet:
int i_protected;
offentlig:
int i_public;
;
ugyldig venDemo_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 ();
returnere 0;
I det forrige program fik vi kompileringsfejl, mens vi forsøgte at få adgang til de private, beskyttede og offentlige medlemmer af en klasse fra en ikke-medlem-funktion. Dette skyldes, at en ikke-medlemsfunktion ikke har adgang til de private og beskyttede medlemmer af en klasse uden for klassens rækkevidde.
I dette eksempel har vi erklæret, at “friendDemo_Func ()” fungerer som en ven inden for klassens rækkevidde, i.e., "Friend_Demo":
ven ugyldig venDemo_Func ();Vi har oprettet et objekt, dvs.e., "Fd" i klassen "Friend_Demo" inde i funktionen "friendDemo_Func ()". Nu kan vi få adgang til de private, beskyttede og offentlige medlemmer af klassen "Friend_Demo" ved hjælp af dot-operatoren. Vi har tildelt henholdsvis 10, 15 og 20 til i_private, i_protected og i_public.
Som du kan se i output nedenfor, er dette program nu kompileret og udført uden nogen fejl og udskriver output som forventet.
#omfatteved hjælp af namespace std;
klasse Friend_Demo
privat:
int i_private;
beskyttet:
int i_protected;
offentlig:
int i_public;
ven ugyldig venDemo_Func ();
;
ugyldig venDemo_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 ();
returnere 0;
Konklusion:
I denne artikel har jeg forklaret konceptet med venfunktionen i C++. Jeg har også vist to arbejdseksempler for at forklare, hvordan venfunktionen opfører sig i C++. Nogle gange kan venfunktionen være meget nyttig i et komplekst programmeringsmiljø. En programmør skal dog være forsigtig med at overbruge den og kompromittere dens OOP-funktioner.