2011-03-05 4 views
9

저는 한 가지 측면에서 긴밀히 협력하는 두 가지 클래스를 가지고 있습니다. 그들은 둘 다 다른 클래스가 아닌 자신이 사용해야하는 서로의 기능을 사용합니다.C++ : getters/setters를 작성하는 대신 friend 클래스를 사용하는 것은 바람직하지 않습니까?

  • getter/setter 함수를 사용하지 않고도 서로의 멤버 변수에 직접 액세스하고 조작 할 수 있도록 두 클래스를 친구로 만들면 좋지 않은가요?
+1

getters/setters에 관해서는 다음을 참조하십시오 : http://www.idinews.com/quasiClass.pdf. 두 문장 있음 : 1.) 그들은 OO에 가증입니다. 2) 필요할 경우 다시 생각해야합니다. – sbi

+0

링크가 작동하지 않는 http://www.parashift.com/c++-faq-lite/friends.html#faq-14.2 – ildjarn

+0

@ildjarn을 참조하십시오. –

답변

10

아니요, 전혀 아닙니다. 그것은 하나의 클래스를 가지고 있지만, 평생과 다른 구현을 위해서 2 개의 클래스로 분리 되어야만하는 공통점입니다. 이 경우 친구 클래스가 분명히 갈 수 있습니다.

한 클래스의 구현을 변경하면 다른 클래스의 구현을 변경해야한다는 것을 의미하는 경우 이는 분명 적용 할 수 있습니다. 특히 두 가지 인터페이스 요소가 공개되어야하는 경우에는 필요하지 않은 경우.

친구 클래스가 존재합니다.

16

게터와 세터 및 프렌드 클래스 모두 캡슐화를 줄이고 커플 링을 증가시킵니다. 최소한 우정은 제한된 액세스를 필요로하는 명시 적으로 지정된 클래스로 축소 된 캡슐화를 제한합니다. 두 클래스가 서로 밀접하게 결합되어 있다는 사실은 나쁜 것이 아니기 때문에 전반적인 디자인의 단일 단위로 간주 될 수 있습니다.