Різниця між функцією друга та класом друзів

Автор: Laura McKinney
Дата Створення: 1 Квітень 2021
Дата Оновлення: 7 Травень 2024
Anonim
Параллельные прямые | Математика | TutorOnline
Відеоролик: Параллельные прямые | Математика | TutorOnline

Зміст


Функція Friend та клас друзів - це методи, що використовуються для доступу до приватних членів класу за допомогою ключового слова friend. Загальна відмінність функції "друг" від "товаришів" - це те, що при використанні функції "друзів" доступ до членів приватного класу можна отримати, але в другому класі доступ до лише імен класу "друг" - не приватних членів класу.

The особливість друга незалежно від того, використовується функція або клас, може негативно впливати на об'єктно-орієнтовану структуру, оскільки вона послаблює інкапсуляція що проти об’єктно-орієнтований парадигма. Це є причиною того, що функцію друзів потрібно використовувати розумно, інакше вона могла б перерва то приховування даних коду.

Ця функція друга - ні комутативний і ні перехідний. X є другом Y не означає, що Y також є другом X. Якщо X є другом Y, а Y є другом Z, це не означає, що X є другом Z.


    1. Порівняльна діаграма
    2. Визначення
    3. Ключові відмінності
    4. Висновок

Порівняльна діаграма

Основа для порівнянняДруг ФункціяКлас друзів
ОсновніЦе функція, що використовується з ключовим словом друга, щоб надати доступ до приватних членів класу не членам.Це клас, який використовується з ключовим словом друга для доступу до приватних членів іншого класу.
Переадресація деклараціїПотрібно використовувати.Не обов'язково.
ВикористовуйтеФункція friend може використовуватися в деяких випадках перевантаження оператора.Клас друзів можна використовувати, коли клас створюється вгорі іншого класу.

Визначення функції друга

The функція друга використовується для доступу до приватних та захищених членів класу, дозволяючи функції, що не є членом, отримати доступ. У цьому типі функції ключове слово friend використовується перед ім'ям функції під час оголошення. Існують деякі обмежувальні умови, застосовані до функції друга. Перша умова - функція друга не успадковується дочірнім класом. Друга умова полягає в тому, що специфікатор класу зберігання може бути відсутнім у функції друзів, а це означає, що він не може бути оголошений статичним і зовнішнім.


Функція friend не викликається об'єктом виклику класу. Прикладами функції друзів є: глобальна функція, функція члена класу, шаблон функції може бути функцією друга. Давайте зрозуміємо це за допомогою прикладу.

#включати використання простору імен std; клас перший {int дані; public: first (int i): data (i) {} display void display (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 - це функція, яка може отримати доступ до приватних та захищених членів класу. Навпаки, клас друзів - це клас, який допомагає отримати доступ до приватних членів класу.
  2. Функція friend оголошується шляхом включення її прототипу всередину класу, а також додає його до ключового слова friend. Аналогічно, клас друзів також визначається за допомогою ключового слова friend.
  3. Передача декларації використовується у випадку функції друга, проти, не потрібно використовувати її в класі друзів.

Висновок

Функція friend потрібна, коли функції потрібно отримати доступ до двох або більше незалежних класів, внутрішніх членів. З іншого боку, клас друзів потрібен, коли клас вимагає доступу до членів іншого класу. Коли функція з декількома членами повинна бути другом цієї функції, в цьому випадку краще використовувати клас друзів.