Поделиться через


Дружественные функции

Функция friend — это функция, которая не является членом класса, но имеет доступ к закрытым и защищенным членам класса. Дружественные функции не считаются членами класса; это обычные внешние функции с особыми правами доступа. Дружественные функции не расположены в области класса и не вызываются с помощью операторов выбора члена (. и –>), если они не являются членами другого класса. Функция friend объявляется с помощью класса, который предоставляет доступ. Объявление friend можно поместить в любом месте объявления класса. На него не влияют ключевые слова управления доступом.

В следующем примере показан класс Point и дружественная функция ChangePrivate. Функция friend имеет доступ к закрытому члену данных объекта Point, который она получает в качестве параметра.

Пример

// friend_functions.cpp
// compile with: /EHsc
#include <iostream>

using namespace std;
class Point
{
    friend void ChangePrivate( Point & );
public:
    Point( void ) : m_i(0) {}
    void PrintPrivate( void ){cout << m_i << endl; }

private:
    int m_i;
};

void ChangePrivate ( Point &i ) { i.m_i++; }

int main()
{
   Point sPoint;
   sPoint.PrintPrivate();
   ChangePrivate(sPoint);
   sPoint.PrintPrivate();
}
  

См. также

Ссылки

friend (C++)