РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
678 of 815 menu

Ключевое слово friend

Ключевое слово friend используется внутри класса для предоставления доступа к его закрытым (private) и защищенным (protected) членам. Дружественной может быть объявлена внешняя функция, метод другого класса или целый класс. В первом случае мы указываем конкретную функцию, которая получает доступ, во втором - метод чужого класса, а в третьем - весь класс целиком. При этом сам класс, объявляющий дружбу, не получает доступа к членам своих друзей.

Синтаксис

class ClassName { friend return_type function_name(params); friend class FriendClassName; // ... };

Пример

Давайте объявим дружественную функцию, которая получает доступ к закрытому полю класса:

#include <iostream> using namespace std; class MyClass { private: int num = 42; friend void showNum(MyClass obj); }; void showNum(MyClass obj) { cout << obj.num << endl; } int main() { MyClass obj; showNum(obj); return 0; }

Результат выполнения кода:

42

Пример

Давайте объявим дружественный класс, который получает доступ к закрытому полю другого класса:

#include <iostream> using namespace std; class MyClass { private: int num = 42; friend class FriendClass; }; class FriendClass { public: void showNum(MyClass obj) { cout << obj.num << endl; } }; int main() { MyClass obj; FriendClass friendObj; friendObj.showNum(obj); return 0; }

Результат выполнения кода:

42

Пример

Давайте объявим дружественный метод другого класса, который получает доступ к закрытому полю:

#include <iostream> using namespace std; class MyClass; class FriendClass { public: void showNum(MyClass obj); }; class MyClass { private: int num = 42; friend void FriendClass::showNum(MyClass obj); }; void FriendClass::showNum(MyClass obj) { cout << obj.num << endl; } int main() { MyClass obj; FriendClass friendObj; friendObj.showNum(obj); return 0; }

Результат выполнения кода:

42

Смотрите также

  • ключевое слово private,
    которое скрывает члены класса
  • ключевое слово public,
    которое открывает доступ к членам класса
  • ключевое слово protected,
    которое ограничивает доступ к членам класса
  • ключевое слово class,
    которое объявляет класс
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить