friend functions c
Научете повече за приятелските функции в C ++ с примери.
C ++ поддържа характеристиката на капсулиране, при която данните се групират заедно с функциите, работещи върху него, за да образуват една единица. Правейки това C ++ гарантира, че данните са достъпни само от функциите, работещи с него, а не за никого извън класа.
Това е една от отличителните черти на C ++, която запазва данните и предотвратява изтичането им във външния свят.
=> Прочетете серията Easy C ++ Training.
Но в някои приложения в реално време понякога може да се наложи да получим достъп до данни извън комплекта. Например, аутсайдерски клас може да иска достъп до частни и защитени данни на клас C ++.
C ++ предоставя възможност за достъп до частни и защитени данни посредством специална функция, наречена функция „приятел“ или клас, която ще обсъдим тук в този урок.
Какво ще научите:
- Приятелска функция в C ++
- Пример за приятелска функция
- Приятелски клас
- Предимства / недостатъци на приятелската функция
- Заключение
- Препоръчително четене
Приятелска функция в C ++
Функция за приятелство в C ++ е функция, която се предшества от ключовата дума “приятел”. Когато функцията е декларирана като приятел, тя може да осъществи достъп до частните и защитени членове на данните от класа.
Функция за приятел се декларира в класа с ключова дума приятел, предшестваща, както е показано по-долу.
class className{ …… friend returnType functionName(arg list); };
Както е показано по-горе, функцията за приятелство е декларирана в класа, чиито частни и защитени членове на данни трябва да бъдат достъпни. Функцията може да бъде дефинирана навсякъде в кодовия файл и не е необходимо да използваме ключовата дума friend или разделителната способност на обхвата, оператора.
Има няколко точки, които трябва да запомните, докато внедрявате приятелски функции в нашата програма:
- Функция приятел може да бъде декларирана в частния или публичния раздел на класа.
- Може да се извика като нормална функция, без да се използва обекта.
- Функцията приятел не е в обхвата на класа, на който е приятел.
- Функция приятел не се извиква с помощта на обекта на класа, тъй като не е в обхвата на класа.
- Функция за приятели не може директно да осъществи достъп до частните и защитени членове на данните от класа. Той трябва да използва обект на клас и след това да осъществи достъп до членовете с помощта на точковия оператор.
- Приятелска функция може да бъде глобална функция или член на друг клас.
Пример за приятелска функция
Нека приложим пример за програмиране, за да разберем по-добре използването на функцията Friend.
#include #include using namespace std; class sample{ int length, breadth; public: sample(int length, int breadth):length(length),breadth(breadth) {} friend void calcArea(sample s); //friend function declaration }; //friend function definition void calcArea(sample s){ cout<<'Area = '< Изход:
Площ = 150
В горната програма имаме извадка от клас с частни членове по дължина и ширина. Имаме публичен конструктор, който инициализира стойностите на дължина и ширина. След това имаме функция за приятел „calcArea“, която изчислява площта, като взема предвид дължината и широчината.
Имайте предвид, че calcArea е функция за приятелство и не е част от класа. В основната функция, след създаване на обект от пробата на класа, го предаваме на функцията calcArea, която изчислява площта и показва стойността.
Приятелски клас
Подобно на приятелските функции, можем да имаме и приятелски клас. Класът приятел може да има достъп до частни и защитени членове на класа, на когото е приятел.
class A{ …… friend class B; }; class B{ …….. };
Както е показано по-горе, клас B е приятел на клас A. Така клас B може да има достъп до частните и защитени членове на клас A.
Но това не означава, че клас А може да има достъп до частни и защитени членове на клас Б. Обърнете внимание, че приятелството не е взаимно, освен ако не го направим така.
По същия начин приятелството на класа не се наследява. Това означава, че тъй като клас B е приятел на клас A, той няма да бъде приятел на подкласовете на клас A.
Нека вземем пример за програмиране, за да демонстрираме класа на приятелите.
#include #include using namespace std; class Area{ int length,breadth,area; public: Area(int length,int breadth):length(length),breadth(breadth) {} void calcArea(){ area = length * breadth; } friend class printClass; }; class printClass{ public: void printArea(Area a){ cout<<'Area = '< Изход:
Площ = 150
безплатно изтегляне на софтуер за часовник на работното време
В тази програма имаме два класа. Класът „Площ“, който изчислява площта, като използва параметрите за дължина и ширина. Обърнете внимание, че полетата, площта, дължината и ширината са частни членове на класа Area.
Следващият клас, който се използва, е “printClass”, който отпечатва площта, изчислена от функция calcArea в класа Area. Тъй като членовете са частни, трябва да направим printClass приятел на Class class.
След като това бъде направено, в основната функция създаваме обект от класа Area, изчисляваме площта и предаваме обекта на функцията printArea на класа printClass за показване на площта.
Предимства / недостатъци на приятелската функция
Едно от предимствата на функцията за приятел или клас е, че можем да получим достъп до частните и защитени данни на класа. Например, ако прилагаме свързан списък, тогава можем да направим свързания списъчен клас като приятел на класа на възела и да осъществим достъп до неговите данни, тъй като свързаният списък се състои от възли.
По този начин в определена ситуация използването на приятелска функция или клас може да се окаже изгодно. Има обаче и някои недостатъци.
Една от отличителните характеристики на C ++ е капсулирането, т.е. групиране на данни и функции, работещи върху тези данни, така че никоя външна функция или клас няма достъп до данните. Но позволявайки на приятелските функции или клас да имат достъп до частните членове на друг клас, ние всъщност компрометираме функцията за капсулиране.
За да предотвратим това, трябва да внимаваме да използваме приятелски функции или клас. Трябва да гарантираме, че не трябва да използваме прекалено много приятелски функции и класове в нашата програма, които напълно ще компрометират капсулирането.
Заключение
Това завършва нашия урок за функцията за приятели и класовете в C ++.
Читателите трябва да бъдат много предпазливи, докато използват класове и функции на приятели, сякаш това може да действа като благодат за програмиста, а също така трябва да се използва предпазливо, тъй като прекомерното използване на приятелски функции и класове може да компрометира OOP характеристиката на капсулиране в нашата програма.
В нашия предстоящ урок ще научим подробно за статичните функции в C ++.
=> Посетете тук, за да научите C ++ от нулата.
Препоръчително четене