kzhereb / knu-is-ooop2019

Materials for "Fundamentals of OOP" course
MIT License
3 stars 0 forks source link

T10.06. Що таке friend? Чи варто його використовувати?* #6

Open WAG13 opened 4 years ago

i1red commented 4 years ago

friend функція/клас мають доступ по всіх полів класу, у якому оголошені. Загалом краще взаємодіяти з класами через їх інтерфейс(public поля та методи), але у деяких випадках використання friend може бути корисним, наприклад: class BigInt { ... friend bool operator>(long, const BigInt&); // для порівняння вигляду 121323 > BigInt("12121") };

bool operator>(long lt, const BigInt& rt) { ... }

solovdaria commented 4 years ago

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

isher2k1 commented 4 years ago

Friend функція - це функція, яка не є членом класу, але має доступ до членів класу, оголошеним в полях private або protected. Методи і friend-функції будуть виконувати аналогічні дії. Зазвичай краще використовувати методи та поля класу, які є публічними, але іноді кращим буде використання friend функій.

TaisiiaFenz commented 4 years ago

Friend функція - це функція, яка не є членом класу, але має доступ до членів класу, оголошеним в полях private або protected. Тобто, коли ми оголошуємо дружні функції, то фактично ми говоримо компілятору, що це "друзі" класу і вони мають доступ до всіх членів цього класу, в тому числі і до закритих. Дружні функції варто використовувати, оскільки досить часто виникає ситуація коли достатньо визначити метод в одному з класів або взагалі визначити функцію, як глобальну, а в інші класи прописати її прототип, як дружній функції (використовуючи слово friend).Це економимо багато часу і код стає набагато коротшим.

AntonHladkiy commented 4 years ago

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

RostyslavMV commented 4 years ago

Friend функція – це функція, яка не є членом класу, але має доступ до членів класу, оголошених в з модифікаторами доступу private або protected. Краще уникати використання friend, в інших мовах, окрім C++ рідко є аналоги, розробивши грамотну структуру програми, friend не буде потрібним.

ilyakorenevskyi commented 4 years ago

Friend functions - це функції, що не є членами класу, однак мають доступ до його private/protected членів. Friend class - це клас, об'єкти якого мають доступ до private/protected членів, у якому він оголошений. Friend варто використовувати коли бажаєш надати доступ до закритих членів классу, при чому не роблячи ці члени паблік. Не варто злобживати використанням friend, проте це буває корисно

WAG13 commented 4 years ago

Friend function - це функція, яка має доступ до private або protected членів класу, але не є членом цього класу. Friend function можна використовувати, щоб отримати доступ до приватних полів класу, але краще їх використовувати обережно, або обійтися public методами класу.

Vladyslav-Samokryk commented 4 years ago

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