2013-05-13 3 views
0

필자는 멤버와 비 멤버 함수의 차이에 대한 설명을 검색했는데, 여전히 혼란 스럽지만 나에게 약간의 일을 명확히하는 예를 보여 주겠다. 다음은 강사가 학습 자료로 준 오래된 테스트의 질문입니다.비회원, 비공개, 공개 등의 기능을 멤버로 선택하기.

텍스트의 queue2.h 및 node2.h 템플릿 구현을 사용하는 main() 프로그램이 있고 문자 대기열 (queue 편지). (문자 < < 일을)

  1. 우리는 큐에 문자열 (것)의 모든 문자를 삽입 할 스트림 연산자를 쓰고 싶어요.

(b) 우리는 이것을<의 회원 또는 비회원으로해야합니까? 비공개, 공개, 친구 또는 둘 중 누구입니까?

  1. 링크 된 목록 도구 키트를 사용하여 향후 조작을 위해이 문자 대기열의 헤드 포인터를 반환하는 도구 (Get_Front라고 함)를 제공하고자합니다.
    그래서 list_head_insert (head_ptr, '2')는 모든 것이 제대로 코딩되면 큐의 맨 앞에 '2'를 배치합니다.

(b) Get_Front를 회원 또는 비회원으로 설정해야합니까? 비공개, 공개, 친구 또는 둘 중 누구입니까?

친구 기능으로 비회원으로 구현해야하는 첫 번째 프로그램을 추측 하겠지만 구체적인 이유는 확실하지 않습니다.

고맙습니다.

+0

개인 데이터 멤버 멤버 함수에 액세스해야하거나 사물 기능이없는 (또는 멤버 함수가 아니어야 함) 무료 함수에 액세스해야하는 항목을 만듭니다. [이것은 좋은 읽을 거리입니다.] (http://www.gotw.ca/gotw/084.htm) – chris

답변

0

(b) 우리는 이것을<의 회원 또는 비회원으로해야합니까? 개인, 공개, 친구 또는 둘 다?

회원, 일반. 대기열 개체 및 과부하 삽입 연산자를 멤버 함수로 만듭니다. 문자를 대기열에 삽입하는 데 사용할 수 있습니다.

이유 : 우리는 큐 스트림과 같이 외부 스트림에 삽입하고 싶지 않았습니다. 가능한 경우 멤버 함수를 사용하는 것이 좋습니다. 친구를 사용할 수없는 경우에만 친구를 사용해야합니다.

Get_Front()는 public 멤버 함수가됩니다.

+0

회원 기능은 일반적으로 친구 기능보다 사용되어야하지만, 친구가 아닌 자유 기능을 통해 사용해서는 안된다는 것에 동의합니다. – chris

+0

@chris : C 타입 함수를 의미합니까? – bjskishore123

+0

기능을 클래스의 비공개 부분에 액세스 할 필요가 없다면 왜 그렇게 할 수 있습니까? – chris

0

위에서 설명한 프로그램의 진정한 목적을 모르는 것은 어렵습니다. 나는 너에게 다소 일반적인 대답을 줄 수있다. 당신이 누군가에 의해 액세스 할 수 있도록하려면

함수

  1. PUBLIC을 확인합니다.
  2. 해당 클래스의 멤버 기능과 친구 만 액세스하려면 PRIVATE를 선택하십시오.
  3. 보호 된 클래스의 멤버 함수와 친구뿐 아니라 해당 클래스의 멤버 함수와 친구 만 액세스하려는 경우 보호됩니다.
  4. FRIEND 개인 회원 클래스에 액세스하려는 경우.

지금까지 회원 & 비회원에 관한 한, 다시는 구현에 대한 세부 사항을 모른 채 말을하기가 어렵습니다. 함수가 클래스의 private 멤버에 액세스해야한다면 멤버 함수 여야합니다.

관련 문제