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

Автор: Laura McKinney
Дата На Създаване: 1 Април 2021
Дата На Актуализиране: 10 Може 2024
Anonim
Computational Linguistics, by Lucas Freitas
Видео: Computational Linguistics, by Lucas Freitas

Съдържание


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

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

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


    1. Сравнителна диаграма
    2. дефиниция
    3. Ключови разлики
    4. заключение

Сравнителна диаграма

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

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

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


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

#include използване на stdpace пространство на имената; клас първо {int данни; обществено: първо (int i): данни (i) {} показване на невалиден приятел (const first & a); }; невалиден дисплей (const first & a) {cout << "data =" <използване на пространството от имена std; клас първи {// Обявете приятел приятел клас клас Втори; public: First (): a (0) {} void () {cout << "Резултатът е" << a << endl; } частен: int a; }; клас Втори {public: невалидна промяна (First & yclass, int x) {yclass.a = x; }}; int main () Първо obj1; Втора obj2; obj1 (). obj2.change (obj1, 5); obj1 (). // Изход Резултатът е 0 Резултатът е 5

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

заключение

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