영넌 개발로그
[C++ 기초] Friend function / Friend class 본문
Friend function
class 내에서 선언되함수가 아닌 외부 함수를 친구처럼 사용하겠다는 의미이다.
이는 private에 대한 개념을 무너뜨리는 것과 같다. read, write가 가능하다.
//2차원 좌표를 표시하는 클래스
class Coord_2D {
friend void outSideShowCoord(const Coord_2D& _c);
private:
int x;
int y;
public:
Coord_2D(int _x, int _y): x(_x),y(_y){}
void showCoord();
};
void Coord_2D::showCoord() {
cout << x << ", " << y << endl;
}
void outSideShowCoord(const Coord_2D& _c)
{
cout << _c.x << ", " << _c.y << endl;
return;
}
Friend class
다른 class에서 내 private 한 변수와 함수를 read, write할 수 있다.
//2차원 좌표를 표시하는 클래스
class Coord_2D {
//friend void outSideShowCoord(const Coord_2D& _c);
friend class SHOW;
private:
int x;
int y;
public:
Coord_2D(int _x, int _y): x(_x),y(_y){}
void showCoord();
};
void Coord_2D::showCoord() {
cout << x << ", " << y << endl;
}
class SHOW
{
public:
void showCoord(const Coord_2D& _c);
};
void SHOW::showCoord(const Coord_2D& _c) {
cout << _c.x << ", " << _c.y << endl;
return;
}
** 남의 코드를 봐야하니 알긴 해야하지만.. 웬만하면 코드에 사용하지 않는게 좋다.
friend를 안쓰고 코드를 짤 수 없는 프로그램이라면, 그건 처음부터 설계가 잘못된 코드이다.
'코딩 > C++' 카테고리의 다른 글
[C++ 기초] Virtual function (destructor, pure) (0) | 2020.12.06 |
---|---|
[C++ 기초] Inheritance 상속이란? / Multiple inheritance 다중상속? (0) | 2020.12.06 |
[C++ 기초] Operator overloading 연산자 오버로딩이란? (0) | 2020.12.06 |
[C ++ 디자인 패턴] Singleton 패턴이란 ? (0) | 2020.12.04 |
Comments