2009-04-27 6 views
18

때때로 C++에서 클래스 정의에서 public 멤버는 처음에 선언되고 나중에 private됩니다. 그러나 변수 또는 데이터 멤버는 일반적으로 비공개이며 공용 메서드에서 사용됩니다. 따라서이 경우 변수는 사용되지만 아직 선언되지 않았습니다. 따라서 코드가 이해하기 어려워집니다. 그러나 유명한 프로그래머, 사이트 또는 서적에서 나중에 비공개 멤버를 선언 할 수있었습니다. 아무도 이유가 무엇인지 압니까?C++에서 공용 멤버 아래에 private 멤버를 정의하는 이유는 무엇입니까?

+2

중복 : http://stackoverflow.com/questions/308581/how-should-i-order-the-members-of-ac-class –

+1

기타 : http://stackoverflow.com/questions/778281/why -put-private-fields-and-the-the-top-of-class –

답변

27

내 수업 시간에 사용자가 비공개 멤버에 관심이 없기 때문에 나는 공개 API (즉, 내 수업 사용 방법)에 관심이 많아서 그런 식으로 일을합니다.

또한 헤더 파일에서 나는 일반적으로 멤버 함수를 정의하는 대신 멤버 함수를 선언하기 때문에 어쨌든 private 멤버에 액세스하지는 않습니다.

+2

+1 : 헤더 파일은 클래스 사용자를위한 계약처럼 작동해야합니다. 구현이 거기에 속해 있지 않습니다. – kgiannakakis

+3

물론 인라인 함수를 제외하고. 그러나 가장 사소한 경우를 제외하고는 모두 수업의 정의를 따라야합니다. – rlbond

+0

@rlbond - 좋은 지적입니다. –

2

일반적으로 개인 회원은 중요하지 않습니다. 코드에서 다른 곳에서 사용하는 방법을 결정하기 위해 클래스를보고있는 경우에는 내부에 대해 신경 쓰지 않으므로 개인 멤버를 맨 아래에 배치해야합니다. 내가 그들에 대해 알 필요가 없으므로. 내가 "클래스를 수정 해요 경우 나는 private 멤버를 찾기 위해 시간을 그들이 대신 전체 클래스를 탈지 필요없이 바닥에있을거야 알

2

을 우리는 어느 쪽과 같다 :. My Question

제 생각에는 수업에 익숙해지면 공개 인터페이스에 처음 익숙해지면 도움이되며, 필요할 때 개인 회원들에게 더 깊이 들어가게됩니다. 개인 회원을보고 시작하면 문맥을 사용하는 방법

5

개인 회원 및 구현을 헤더 파일에서 숨길 수 있습니다. 개인 회원 정의를 하단에 배치하는 것이 빠른 방법입니다. 아마도 Pimpl idiom을 사용하고 클래스의 개인 부분을 내부 구조체에 숨기는 것이 좋습니다.

20

위에서 아래로 텍스트를 읽었으므로 관련성이 가장 높은 정보가 맨 위에 있어야합니다. 클래스 정의에서 그것은 공용 인터페이스입니다.

0

동의. 사적인 구성원은 하단에 선언해야합니다. 개인 멤버를 먼저 선언해야하는 유일한 이유는 함수가 다음과 같은 사용자 지정 데이터 형식을 가져 오거나 반환해야 할 때입니다. 컴파일러는 어떤 종류의 데이터인지 묻습니다.

은 그러나 심지어 그 경우에 내가 할 역자 주 :

{ 개인 : /// 아래에서보다 개인 프로그래머 OFC advicing! 이전 단지

공공 유형의 선언 :

개인 :

};

관련 문제