The Friend Keyword
Свайпніть щоб показати меню
Ключове слово friend є унікальною конструкцією, яка відходить від стандартних принципів інкапсуляції в об'єктно-орієнтованому програмуванні. Воно дозволяє функції або іншому class отримувати доступ до private та protected членів class.
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
123456class KeyManager { public: KeyManager(const std::string& key) : encryptionKey(key) {} private: std::string encryptionKey; };
Змінна encryptionKey залишається private, і не надається жодного методу доступу, оскільки ми хочемо запобігти зовнішньому доступу до неї ззовні class. Але якщо виникає необхідність використовувати зовнішній алгоритм для шифрування та розшифрування, саме тут вступає в дію ключове слово keyword.
KeyManager.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 без його використання, хоча в окремих ситуаціях це може бути необхідно.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат