class에서 private으로 변수를 선언하게 되면 외부에서 내부 멤버변수로 접근 할 수 없게 된다.
그래서 외부에서 클래스의 멤버변수에 접근 하기 위해서는 함수를 이용하여야 했고, 이는 정보 은닉이라고 하였다.
그런데 클래스에 직접 접근하는 방법이 있는데 그것은 friend라는 예약어를 통해서 가능하다.
클래스에서 public으로 전역 함수나 클래스를 앞에 friend 예약어를 붙이고 정의 하게 되면 외부에서 접근이 가능해진다.
위 그림을 보면 전역함수인 setData를 통하여 클래스의 멤버변수를 초기화하는 것을 볼 수있다.
클래스 또한 저러한 형태로 friend 선언이 가능하며, 클래스AAA에 클래스BBB를 friend 선언하면 BBB에서는 AAA의 private에 접근이 가능하게 되지만 그 반대는 불가능하다.
하지만 friend예약어의 경우 정보은닉에 위배되기 때문에 사용하지 않는 것이 좋다.
'Programming > C/C++' 카테고리의 다른 글
클래스와 static (0) | 2015.01.15 |
---|---|
클래스와 const (0) | 2015.01.15 |
복사생성자와 얕은복사 (0) | 2015.01.15 |
class의 정보은닉과 캡슐화 (0) | 2015.01.13 |
reference와 pointer의 차이 (0) | 2015.01.13 |