Mis on sõbra funktsioon?
Sõbrafunktsioon on mitte-liikme funktsioon, mis pääseb juurde klassi privaatsetele ja kaitstud liikmetele. “Sõber” on märksõna, mis näitab, et funktsioon on klassi sõber. See võimaldab kompilaatoril teada saada, et konkreetne funktsioon on antud klassi sõber. Sõbrafunktsioon peaks siis saama pääseda antud klassi privaatsele ja kaitstud liikmele. Ilma sõbra märksõnata pääseb mitteliikmeväline funktsioon juurde ainult klassi avalikele liikmetele.
Sõbra funktsiooni põhijooned:
Siin on sõbrafunktsiooni põhijooned:
- Sõbrafunktsioon ei kuulu klassi reguleerimisalasse.
- Sõbrafunktsiooni ei saa kutsuda klassi eksemplari abil.
- See pääseb liikmetele juurde objekti ja punkti operaatori abil.
Sõbra funktsiooni süntaks:
Siin on sõbrafunktsiooni süntaks:
klass Klass_nimi_Demo…
…
sõbra return_Type function_Name (arg_1, arg_2,…);
;
Sõbra funktsiooni näide:
Nüüd uurime näites programmi, et mõista sõbrafunktsiooni mõistet C-s++. Allolevas näidisprogrammis on meil klass „Friend_Demo”. Sellel on kolme erinevat tüüpi andmeliikmeid, s.t.e., privaatne, kaitstud ja avalik.
Oleme määranud veel ühe funktsiooni, st.e., „FriendDemo_Func ()” jääb klassi „Friend_Demo” reguleerimisalast välja ja proovis pääseda juurde klassi „Friend_Demo” liikmetele (privaatsetele, kaitstud ja avalikele).
Kuid nagu näeme programmi koostamisel allpool olevast väljundist, viskab see kompileerimisvigu. Sõbra funktsioon lahendab selle probleemi täpselt.
# kaasatanimeruumi kasutamine std;
klass Sõber_Demo
privaatne:
int i_privaatne;
kaitstud:
int kaitstud;
avalik:
int i_public;
;
void friendDemo_Func ()
Sõber_Demo fd;
fd.i_privaatne = 10;
fd.i-kaitstud = 15;
fd.i_publik = 20;
cout << fd.i_private << endl;
cout << fd.i_protected << endl;
cout << fd.i_public << endl;
int main ()
sõberDemo_Func ();
tagastama 0;
Eelmises programmis leidsime kompileerimisvigu, kui proovisime juurdepääsu klassi privaatsetele, kaitstud ja avalikele liikmetele funktsioonist. Seda seetõttu, et mitteliikmelisel funktsioonil ei ole lubatud klassi privaatsetele ja kaitstud liikmetele juurde pääseda väljaspool klassi reguleerimisala.
Nüüd oleme selles näites deklareerinud funktsiooni “friendDemo_Func ()” sõbrana klassi piires, st.e., “Friend_Demo”:
sõber void friendDemo_Func ();Oleme loonud objekti, s.t.e., Funktsiooni „friendDemo_Func ()” sees on klassi „Friend_Demo” „fd”. Nüüd pääseme punktioperaatori abil klassi „Friend_Demo” privaatsetele, kaitstud ja avalikele liikmetele. Oleme määranud vastavalt i_private, i_protected ja i_public 10, 15 ja 20.
Nagu näete allpool olevast väljundist, on see programm nüüd kompileeritud ja käivitatud ilma tõrgeteta ning printib väljund ootuspäraselt.
# kaasatanimeruumi kasutamine std;
klass Sõber_Demo
privaatne:
int i_privaatne;
kaitstud:
int kaitstud;
avalik:
int i_public;
sõber void friendDemo_Func ();
;
void friendDemo_Func ()
Sõber_Demo fd;
fd.i_privaatne = 10;
fd.i-kaitstud = 15;
fd.i_publik = 20;
cout << fd.i_private << endl;
cout << fd.i_protected << endl;
cout << fd.i_public << endl;
int main ()
sõberDemo_Func ();
tagastama 0;
Järeldus:
Selles artiklis olen selgitanud sõbrafunktsiooni mõistet C-s++. Olen näidanud ka kahte toimivat näidet, et selgitada, kuidas sõbrafunktsioon C-s käitub++. Mõnikord võib sõbrafunktsioon olla keerukas programmeerimiskeskkonnas väga kasulik. Programmeerija peaks siiski olema ettevaatlik selle ülekasutamise ja OOP-funktsioonide kahjustamise suhtes.