Какво е приятелска функция?
Функцията за приятели е нечленова функция, която има достъп до частните и защитени членове на клас. „Приятел“ е ключова дума, използвана, за да покаже, че дадена функция е приятел на клас. Това позволява на компилатора да знае, че конкретната функция е приятел на дадения клас. Тогава функцията за приятели трябва да има достъп до частния и защитен член на даден клас. Без ключовата дума friend, нечленова външна функция може да има достъп само до публичните членове на клас.
Основни характеристики на функцията на приятел:
Ето основните характеристики на функцията за приятелство:
- Функцията за приятелство не е в обхвата на класа.
- Функцията приятел не може да бъде извикана с помощта на екземпляр на клас.
- Той може да осъществи достъп до членовете, използвайки оператора обект и точка.
Синтаксис на приятелска функция:
Ето синтаксиса на функцията приятел:
клас Class_Name_Demo..
..
приятел return_Type function_Name (arg_1, arg_2,…);
;
Пример за приятелска функция:
Сега нека разгледаме примерна програма, за да разберем концепцията за функцията за приятели в C++. В примерната програма по-долу имаме клас “Friend_Demo”. Той има три различни типа членове на данни, т.е.д., частни, защитени и публични.
Определихме друга функция, т.е.д., “FriendDemo_Func ()” извън обхвата на класа “Friend_Demo” и се опита да осъществи достъп до членовете (частни, защитени и публични) на класа “Friend_Demo”.
Но, както можете да видите в изхода по-долу, когато компилираме програмата, тя изхвърля грешки при компилация. Функцията приятел ще реши точно този проблем.
#includeизползване на пространство от имена std;
клас Friend_Demo
частно:
int i_private;
защитени:
int i_protected;
публично:
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 ();
връщане 0;
В предишната програма получавахме грешки при компилация, докато се опитвахме да получим достъп до частните, защитените и публичните членове на клас от функция, която не е член. Това е така, защото на нечленова функция не е разрешен достъп до частните и защитени членове на клас извън обхвата на класа.
Сега, в този пример, декларирахме функцията “friendDemo_Func ()” като приятел в обхвата на класа, i.д., “Friend_Demo”:
friend void friendDemo_Func ();Създадохме обект, т.е.д., “Fd” на класа “Friend_Demo” във функцията “friendDemo_Func ()”. Сега можем да осъществим достъп до частните, защитени и публични членове на класа “Friend_Demo”, използвайки точковия оператор. Присвоихме съответно 10, 15 и 20 на i_private, i_protected и i_public.
Както можете да видите в изхода по-долу, тази програма вече се компилира и изпълнява без никакви грешки и отпечатва изхода, както се очаква.
#includeизползване на пространство от имена std;
клас Friend_Demo
частно:
int i_private;
защитени:
int i_protected;
публично:
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 ();
връщане 0;
Заключение:
В тази статия обясних концепцията за функцията за приятели в C++. Също така показах два работни примера, за да обясня как се държи функцията за приятели в C++. Понякога функцията за приятелство може да бъде много полезна в сложна среда за програмиране. Програмистът обаче трябва да бъде предпазлив при прекаляване с него и компрометиране на неговите OOP функции.