Friend란
대상 객체의 private영역도 확인하겠다 라는뜻이다.
A라는 객체의 Firend로 B객체를 선언하게되면 A객체는 B객체의 private영역도 확인할수있다.
#include"BBB.h"
class AAA
{
private:
int number;
public :
void Paint(BBB bb)
{
cout << "AAA : " << number << endl;
cout << "AAA(BBB) : " << bb.number << endl;
}
};
#include"AAA.h"
class BBB
{
int number;
void Paint()
{
cout << "BBB : " << number << endl;
}
public:
friend class AAA;
};
위의 예제를보면 AAA클래스에서 BBB클래스를 확인할때 BBB클래스에 number까지 확인할수있다.
Friend가 되어있지 않았다면 확인하지 못했을것이다.
다음으로는 함수의 Friend선언이다.
#include"BBB.h"
class AAA
{
};
void Paint(BBB bb)
{
bb.number = 10;
}
#include"AAA.h"
class BBB
{
int number;
public:
friend void Paint(BBB bb);
};
BBB클래스에 Paint함수를 Friend선언을 해주었다. 그리하여 AAA클래스에서 정의한 Paint는 함수는 BBB클래스의
Friend함수이기때문에 BBB클래스의 private변수를 확인할수있다.
TMI
Friend선언은 논란이 많았다고한다. friend선이 객체지향의 대명사 중 하나인 정보은닉을 무너뜨리는 문법이기 때문에
그래서 friend 선언은 지나치면 아주 위험할 수 있다고한다. 사용할때 극히 소극적으로 사용해야 한다고 한다.
그리고 왠만해서는 사용을 하지 않는것을 추천 한다고 한다.
'C++' 카테고리의 다른 글
C++ 이란? (0) | 2020.08.11 |
---|---|
C++ explicit (0) | 2020.07.30 |
C++ 구조체(struct) (0) | 2020.07.20 |
Inline함수 (0) | 2020.01.19 |
C++의 Casting,형변환 (0) | 2020.01.19 |