Топ питань
Часова шкала
Чат
Перспективи
Класи-друзі (програмування)
З Вікіпедії, вільної енциклопедії
Remove ads
Дружні класи або Класи-друзі в C++ це такі класи, які можуть мати доступ до членів класу з модифікаторами "private" і "protected" того класу, в якому вони оголошені як друзі за допомогою ключового слова friend. [1]
Застосування
За допомогою дружніх класів, можна краще організувати інкапсуляцію і розмежувати доступ шляхом дозволу доступу до повного функціоналу класу лише певній частині коду, дозволяючи іншим бачити лише частину його API, в іншому випадку повинно було б відкривати публічний доступ до прихованої частини.[2] Це збільшення інкапсуляції відбувається за рахунок посилення зв'язку між класами. [3]
Приклад
class B {
friend class A; // Клас A є другом класу B
private:
int i;
};
class A {
public:
A(B b) {
b.i = 0; // доступ до приватного поля можливий
}
};
Властивості
- Дружба класів не є симетричною – Якщо клас
Aє другом класуB, то класBне є автоматично другом класуA. - Дружба класів не є транзитивною – Якщо клас
Aє другом класуBі класBне є другом класуC, то класAне є автоматично другом класуC. - Друзі не успадковуються – Якщо друг класу
Baseне є автоматично другом класуDerivedі навпаки; так само як і якщоBaseє другом іншого класу,Derivedне буде автоматично другом того класу і навпаки. - Доступ відкритий друзям класу успадковується – Друг класу
Derivedможе доступатися до захищених членів класуDerived, що був успадкований відBase. Відзначимо однак, що друг класуDerivedматиме лише доступ до членів успадкованих від класуBaseдо яких Derived сам має доступ, наприклад, якщоDerivedпублічно успадковується відBase,Derivedлише матиме доступ до захищених (і публічних) членів успадкованих відBase, але не до приватних членів, і так само і друзі цього класу.
Див. також
- Дружня функція
Примітки
Посилання
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads