2012-11-26 1 views
0

가능한 중복 :
What is this weird colon-member syntax in the constructor?생성자 설정?

내가 이런 종류의 코드가

가 있다는 것입니다 내가이

class OptionStudent: public Student // derived class from Student class 
{ 
    public: 
     explicit OptionStudent(const std::string id = "12345678", 
           const std::string first = "someone") 
     : Student(id, first) 
     { 
      count_++; 
     } 
} 

이 말 무슨 뜻인지 이해하려고 노력 중이 야 "누군가"다음의 콜론) : < - pa rt는이 생성자를 호출 했습니까?
생성자가 약간 잘못되었을 수도 있지만 이것이 무엇인지 불확실하다는 것을 알고 있습니다. 나는 강사가 칠판에 쓴 내용에서 내 노트를 복사하고 이해하지 못했습니다.
무언가를 기억하고있는 클래스 나 객체와 어떤 관계가 있습니까?

+0

초기화 목록입니다. – rightfold

답변

1

회원 인 initialization list입니다. 이 경우 기본 클래스의 생성자를 idfirst을 인수로 호출합니다. 또한 클래스의 데이터 멤버가 아닌 경우 static 데이터 멤버에 대한 초기 값을 제공 할 수 있습니다 (있는 경우).

Student(id, first); 이후의 세미콜론은 구문 오류이므로 제거해야합니다.

+0

아 감사합니다! 그리고 예. 추가 요소에 대한 쉼표 여야합니다. 추가 멤버에 대한 내 노트에서 다른 생성자의 버릇이 있음을 깨달았습니다. 세미콜론을 버릇없이 버렸다. 나는 그것을 초기화 목록이라고 부르지 않았다. –

0

"초기화 목록"이라고합니다. 다음 문서 "Understanding Initialization Lists in C++"을 참조하십시오.

기본 아이디어는 { 후에 생성자 코드를 입력 할 때 모든 멤버가 인수 또는 기본값으로 전달 된 값으로 초기화되도록해야한다는 것입니다.

초기화 목록을 사용하면 기본 클래스에도 인수를 직접 전달할 수 있습니다!

  • 첫째, 모두 idfirstdefault parameter value를 사용하여 어떤 값으로 설정됩니다 : 이것은 당신이 설명하는 예에서 일어나는 것입니다.
  • 초,이 값은 기본 Student 클래스를 초기화하는 데 사용됩니다. 물론 하나의

OptionStudent 인수로 다른 값을 전달할 수 있으며,이 값은 Student을 초기화하는 데 사용됩니다.