2010-08-17 6 views
5

가능한 중복 : 콜론 (":")을 무엇생성자에서 콜론은 무엇을 의미합니까?

cross(vector<int> &L_, vector<bool> &backref_, vector< vector<int> > &res_) : 

    L(L_), c(L.size(), 0), res(res_), backref(backref_) { 

    run(0); 

} 

: 아래의 C++ 함수의
C++ weird constructor syntax
Variables After the Colon in a Constructor
What does a colon (:) following a C++ constructor name do?

에게 관계는 트위스트의 왼쪽과 오른쪽 부분? 그리고 아마도이 코드 조각에서 무엇을 말할 수 있을까요?

+0

중복으로 투표를 끝내 겠지만 원래 질문의 제목은 많이 남습니다. 아마 편집해야할까요? – Troubadour

+0

hehe, good inspectors – luna

+3

'이상한 구문'질문의 제목에 큰 문제가 보이지 않습니다. 두 가지 질문의 실제 문제는 "초기화 프로그램 목록"을 검색하면 문제가 이미 해결되었음을 알 수 있습니다. 그래도 제목에 '생성자'를 유지하는 것이 도움이된다고 생각합니다. 어떤 경우에도':'는 거의 발견 할 수 없다. 아마 콜론이 도움이 될지도 모르겠다. 나는 모른다. –

답변

4

이것은 클래스의 c'tor가 실제로 호출되기 전에 클래스 멤버 필드를 초기화하는 방법입니다.

class A { 

    private: 
     B b; 
    public: 
     A() { 
      //Using b here means that B has to have default c'tor 
      //and default c'tor of B being called 
     } 
} 

을 이제을 writting에 의해 :

당신이 가진 가정 C++에서 많은 것들을 같이

class A { 

    private: 
     B b; 
    public: 
     A(B _b): b(_b) { 
      // Now copy c'tor of B is called, hence you initialize you 
      // private field by copy of parameter _b 
     } 
} 
+0

감사합니다. "c'tor"는 무엇입니까? – luna

+0

c'tor == constructor – John

+0

@ 존 : 알았어. 시간이 절약 됐어. – luna

4

회원 초기화 목록입니다.

각 구성원 변수는 콜론 뒤에있는 부분의 괄호 안의 값으로 설정합니다.

+0

당신을 진심으로 환영합니다! – John

3

, : 많은 것을 위해 사용되지만, 귀하의 경우에 그것은의 시작 초기화 목록.

다른 용도는 예를 들어 공개/개인/보호 후에, 사례 라벨 다음에, 삼항 연산자의 일부로, 그리고 아마도 다른 것들입니다.

+0

참고 : 주제가 내 대답이 끝나면 더 구체적으로 수정되었다. –