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