Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте The Friend Keyword | Огляд інкапсуляції
ООП C++

The Friend Keyword

Свайпніть щоб показати меню

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

main.cpp

main.cpp

1234567891011121314151617
#include <iostream> class Example { private: const static int static_private_member = 0; friend void func(); // grants access to the private members to func() }; void func() { std::cout << Example::static_private_member; } int main() { func(); }

Використання цього підходу порушує інкапсуляцію, оскільки дозволяє зовнішнім сутностям отримувати доступ до членів class. Проте іноді виникають ситуації, коли це необхідно. Наприклад:

KeyManager.h

KeyManager.h

123456
class KeyManager { public: KeyManager(const std::string& key) : encryptionKey(key) {} private: std::string encryptionKey; };

Змінна encryptionKey залишається private, і не надається жодного методу доступу, оскільки ми хочемо запобігти зовнішньому доступу до неї ззовні class. Але якщо виникає необхідність використовувати зовнішній алгоритм для шифрування та розшифрування, саме тут вступає в дію ключове слово keyword.

KeyManager.h

KeyManager.h

CryptographicAlgorithm.h

CryptographicAlgorithm.h

12345678910
#include "CryptographicAlgorithm.h" class KeyManager { public: KeyManager(const std::string& key) : encryptionKey(key) {} private: std::string encryptionKey; // Allow CryptographicAlgorithm access to private members friend class CryptographicAlgorithm; };

Найпоширеніший випадок використання ключового слова friend виникає, коли потрібні швидкі виправлення, і ви плануєте провести рефакторинг пізніше. Бажано проектувати взаємозв'язки між class без його використання, хоча в окремих ситуаціях це може бути необхідно.

question mark

Для чого використовується ключове слово friend?

Виберіть правильну відповідь

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 6

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Секція 3. Розділ 6
some-alt