Ключове Слово Friend
Свайпніть щоб показати меню
Ключове слово 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 без його використання, хоча в окремих ситуаціях це може бути необхідно.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат