Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Ключове Слово Friend | Огляд Інкапсуляції
C++ ООП
course content

Зміст курсу

C++ ООП

C++ ООП

1. Основи ООП у C++
2. Конструктори та Деструктори
3. Огляд Інкапсуляції
4. Огляд Наслідування
5. Огляд Поліморфізму

book
Ключове Слово Friend

Ключове слово friend є унікальною конструкцією, що відходить від стандартних принципів інкапсуляції в об'єктно-орієнтованому програмуванні. Воно дозволяє функції або іншому class отримувати доступ до private та protected членів class.

main.cpp

main.cpp

copy
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

KeyManager.h

copy
123456
class KeyManager { public: KeyManager(const std::string& key) : encryptionKey(key) {} private: std::string encryptionKey; };

encryptionKey зберігається як private, і жодного метода доступу не надано, оскільки необхідно запобігти зовнішньому доступу до нього ззовні class. Але якщо виникає потреба використати зовнішній алгоритм для шифрування та дешифрування, саме тут у гру вступає ключове слово keyword.

KeyManager.h

KeyManager.h

CryptographicAlgorithm.h

CryptographicAlgorithm.h

copy
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 без його використання, хоча в окремих ситуаціях це може бути необхідно.

question mark

Для чого використовується ключове слово friend?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 6

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

course content

Зміст курсу

C++ ООП

C++ ООП

1. Основи ООП у C++
2. Конструктори та Деструктори
3. Огляд Інкапсуляції
4. Огляд Наслідування
5. Огляд Поліморфізму

book
Ключове Слово Friend

Ключове слово friend є унікальною конструкцією, що відходить від стандартних принципів інкапсуляції в об'єктно-орієнтованому програмуванні. Воно дозволяє функції або іншому class отримувати доступ до private та protected членів class.

main.cpp

main.cpp

copy
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

KeyManager.h

copy
123456
class KeyManager { public: KeyManager(const std::string& key) : encryptionKey(key) {} private: std::string encryptionKey; };

encryptionKey зберігається як private, і жодного метода доступу не надано, оскільки необхідно запобігти зовнішньому доступу до нього ззовні class. Але якщо виникає потреба використати зовнішній алгоритм для шифрування та дешифрування, саме тут у гру вступає ключове слово keyword.

KeyManager.h

KeyManager.h

CryptographicAlgorithm.h

CryptographicAlgorithm.h

copy
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 без його використання, хоча в окремих ситуаціях це може бути необхідно.

question mark

Для чого використовується ключове слово friend?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 6
some-alt