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