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