Дружественные функции в C++: методы объявления и объяснение их использования

В C++ дружественная функция — это функция, объявленная внутри класса и имеющая доступ к закрытым и защищенным членам класса. Он не является членом класса, но ему предоставлены особые привилегии доступа. Вот пример объявления дружественной функции в C++:

class MyClass {
private:
  int privateData;
public:
  MyClass(int data) : privateData(data) {}
  friend void friendFunction(MyClass obj);
};
void friendFunction(MyClass obj) {
  // Accessing private member of MyClass
  int data = obj.privateData;
  // Perform operations using private data
  // ...
}

В приведенном выше примере friendFunctionобъявлен как друг класса MyClass. В результате он может получить доступ к частному члену privateDataлюбого объекта класса MyClass.

Методы объявления дружественных функций в C++:

  1. Внутри объявления класса: Дружественные функции могут быть объявлены внутри объявления класса, обычно в разделе public. Им предшествует ключевое слово friend.
class MyClass {
  // ...
public:
  friend void friendFunction(MyClass obj);
};
  1. Предварительное объявление: дружественные функции могут быть объявлены заранее вне объявления класса и определены позже.
class MyClass;
void friendFunction(MyClass obj);
class MyClass {
  // ...
};
  1. Область пространства имен: дружественные функции могут быть объявлены в области пространства имен вне объявления класса.
class MyClass {
  // ...
};
namespace MyNamespace {
  friend void friendFunction(MyClass obj);
}