Препоръчано, 2024

Избор На Редактора

Разлика между приятелска функция и клас приятел

Функцията Friend и класът на приятели са техниките, които се използват за достъп до частните членове на класа чрез използване на ключовата дума friend. Общата разлика между функцията приятел и клас приятел е, че когато се използва функцията за приятели, частните членове на класа могат да бъдат достъпни, но в клас приятели, само имената на класа приятел са достъпни, а не частните членове на класа.

Функцията за приятели дали използваната от функция или клас може да доведе до отрицателно въздействие върху обектно-ориентираната рамка, тъй като отслабва капсулирането, което е против обектно-ориентираната парадигма. Това е причината, поради която функцията за приятели трябва да се използва разумно, в противен случай може да се счупи скритият код.

Тази функция на приятел не е нито комутативна, нито преходна . X е приятел на Y, не прави извод, че Y е също приятел на X. Ако X е приятел на Y и Y е приятел на Z, не предполага, че X е приятел на Z.

Сравнителна таблица

Основа за сравнениеФункция приятелКлас приятел
ОсновенТова е функция, използвана с ключова дума на приятел, за предоставяне на достъп до функцията, която не е член, на частните членове на клас.Това е клас, използван с ключова дума на приятел за достъп до частните членове на друг клас.
Предварителна декларацияТрябва да се използва.Не е задължително.
употребаФункция приятел може да се използва в някои ситуации на претоварване на оператора.Клас приятел може да се използва, когато клас е създаден в горната част на друг клас.

Дефиниция на функцията приятел

Функцията приятел се използва за достъп до частни и защитени членове на класа, като позволява на нечленката да получи достъп. В този тип функция, ключова дума приятел се използва преди името на функцията по време на декларацията. Има някои ограничителни условия, които се прилагат за функцията за приятели. Първото условие е, че функцията приятел не се наследява от детска класа. Второто условие е, че спецификаторът на класа на съхранение може да не присъства в функцията приятел, което означава, че не може да бъде деклариран като статичен и външен.

Функцията приятел не се извиква с обект, който извиква класа. Примерите на функцията приятел са: глобална функция, член функция на клас, функция шаблон може да бъде приятел функция. Нека го разберем с помощта на пример.

 #include using namespace std; първи клас {int данни; public: първо (int i): данни (i) {} приятел void display (const first & a); }; void display (const първи & a) {cout << "data =" < 

Определение на клас приятели

Подобно на функцията за приятели, можем да направим един клас приятел на друг клас, който се нарича клас приятел . Така класът приятел може да получи достъп до частни членове, дефинирани в другия клас. Важно е да запомните, че приятелският клас може да има достъп до имената, дефинирани в другия клас, вместо да наследява друг клас. Именно членовете на първата класа не могат да станат членове на клас приятели. Тези класове приятели рядко се използват.

Класът приятел може да бъде деклариран в повече от един клас. Той се счита за кратък алтернативен метод за функция на приятели, защото с помощта на това можем да създадем клас приятел, който да има достъп до всички членове на данните и да функционира, вместо да създава множество функции на приятел.

 #include using namespace std; class First {// Обяви клас приятел клас приятел Второ; public: Първо (): a (0) {} void print () {cout << "Резултатът е" << a << endl; } private: int a; }; class Second {public: void change (Първо и yclass, int x) {yclass.a = x; }}; int main () // Изход Резултатът е 0 Резултатът е 5 

Ключови разлики между приятелска функция и клас приятел

  1. Функцията Friend е функция, която има достъп до частните и защитени членове на класа. За разлика от него, клас приятел е клас, който помага за достъп до частните членове на клас.
  2. Функцията за приятели е обявена чрез включване на прототипа му в класа, предшестваща го с ключовата дума friend. По същия начин, клас приятел също се определя чрез ключова дума friend.
  3. Предварителната декларация се използва в случай на функция на приятел срещу, не е необходимо да се използва в клас приятели.

заключение

Функция приятел е необходима, когато дадена функция трябва да има достъп до две или повече независими класове, вътрешни членове. От друга страна, клас на приятел е необходим, когато един клас изисква достъп до членовете на друг клас. Когато функцията за множество членове трябва да бъде приятел на тази функция, в този случай е по-добре да се използва клас приятел.

Top