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