영넌 개발로그

[C++ 기초] Friend function / Friend class 본문

코딩/C++

[C++ 기초] Friend function / Friend class

영넌 2020. 12. 6. 02:28

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를 안쓰고 코드를 짤 수 없는 프로그램이라면, 그건 처음부터 설계가 잘못된 코드이다.

 

 

Comments