티스토리 뷰

programming language/c++

[c++] freind 함수

아풀 2018. 6. 12. 17:30

friend


#include 

class CComplex{

	float a, b;
	
	public :
		CComplex(float ta = 0.0, float tb = 0.0)
		{
			a = ta;
			b = tb;
		}
		
		void Add(CComplex c)
		{
			a += c.a;
			b += c.b;
		}
};

int IsEqual(CComplex a, CComplex b)
{
	return a.a==b.a && a.b==b.b ;
}

void main()
{
	CComplex a(1.0, 2.0), b(1.0, 2.0);
	printf("%d \n",IsEqual(a, b));
}


위 프로그램은 컴파일이 되지 않는다. 이유는 IsEqual()이 CComplex의 private 멤버 a와 b를 접근하기 때문이다.

이에 대한 해결 방법으로 friend를 사용할 수 있다. 즉, CComplex가 IsEqual()을 friend 함수로 선언하는 것이다.

friend로 선언되면 모든 멤버에 대해 접근이 가능하다.


아래와 같은 코드를 CComplex안에 추가해야한다.

friend int IsEqual(CComplex a, CComplex b);


주의할 점

- CComplex 안에서 IsEqual을 friend로 선언 ! 
- friend 함수는 멤버함수가 아니므로 CComplex::IsEqual()과 같이 하면 안된다.
- IsEqual()을 정의하는 쪽에 friend란 키워드를 사용하면 안된다.
- A가 B의 친구이고, B가 C의 친구라고 해서 A가 C의 친구는 아니다.


공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함