2012-02-05 6 views
9

가능한 중복 : 기호 :
What does a colon following a C++ constructor name do?구조체 생성자 구문

나는 온라인 그러나 생성자에 대한 구문이 특히 나에게 약간의 혼란을 아래의 예를 발견했다. 누구든지 내게 간단한 설명을 주시겠습니까? 감사. 이 호출 할 때

struct TestStruct { 
    int id; 
    TestStruct() : id(42) 
    { 
    } 
}; 
+0

의 중복 가능성 (http://stackoverflow.com/questions/1272680/what-does-a -colon-following-ac-constructor-name-do). 또한 중복 목록을 참고하십시오. [여기] (http://stackoverflow.com/questions/3504215/what-does-the-colon-mean-in-a-constructor) –

답변

20

생성자는 id42에 초기화합니다. 초기화 목록이라고합니다. 생성자의 유일한 목적은 멤버 변수

struct TestStruct { 
    int id; 
    double number; 
    TestStruct(int anInt, double aDouble) : id(anInt), number(aDouble) { } 
}; 
를 초기화 할 때

당신의 예에서

, 그것은 당신이뿐만 아니라 여러 회원들과 함께 그것을 할 수

struct TestStruct { 
    int id; 
    TestStruct() 
    { 
     id = 42; 
    } 
}; 

에 해당

struct TestStruct { 
    int id; 
    double number; 
    TestStruct() : id(42), number(4.1) 
    { 
    } 
}; 

그것은 유용

+1

"똑같은 것"은 약간 무심하고 아마 상당히 공평합니다. 오해하기 쉽다. –

+0

동의 및 수정 :) – Vache

+4

멋지지만 고맙지 만 "유용 할뿐만 아니라"기본 하위 객체, 상수 또는 참조와 같이 거의 초기화되지 않아야하는 변수의 필수 사항입니다. –