Friend 함수
friend 함수는 클래스의 멤버가 아니지만 클래스의 전용 및 보호된 멤버에 액세스할 수 있는 함수입니다. friend 함수는 클래스 멤버로 간주되지 않으며, 특수 액세스 권한이 부여된 일반 외부 함수입니다. friend는 클래스 범위에 포함되지 않으며, 다른 클래스의 멤버가 아닌 경우 멤버 선택 연산자(. 및 –>)를 사용하여 호출되지 않습니다. friend 함수는 액세스 권한을 부여하는 클래스에서 선언됩니다. friend 선언은 클래스 선언의 어느 곳에나 배치될 수 있으며, 액세스 제어 키워드의 영향을 받지 않습니다.
다음 예제에서는 Point 클래스와 ChangePrivate라는 friend 함수를 보여 줍니다. 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();
}