2010-07-22 7 views
3

C++의 클래스 멤버 초기화 목록을 완료해야합니까? 또는 클래스의 구성원 데이터 중 하나 또는 두 개를 간단하게 초기화 할 수 있습니까?C++ 멤버 초기화 목록 완성도

미리 감사드립니다.

답변

5

완료 할 필요는 없습니다. 기본 클래스를 제외하고 기본값이 아닌 POD 클래스 유형을 제외 할 수 있지만 POD 유형은 초기화되지 않은 상태로 남습니다.
분명히 일정한 회원과 참조 은 회원 초기화 목록에서 초기화 될입니다.

+0

에는 차이가 있습니다. 멤버 초기화 목록에서 수행하는 작업과 기본 c를 통해 초기화되는 변수 효율적인 것 말고는 onstructors 않습니다? – alphacentauri

+1

@alpha : "기본 생성자를 통해"무엇을 의미합니까? 이 단계에서, 어쨌든 효율성에 대해서는 걱정할 필요가 없지만 코드의 정확성에 대해서는 걱정할 필요가 없습니다. – GManNickG

+0

@alpha : 명시 적 대 암시 적 기본 구성/초기화를 의미하는 경우 - 초기화되지 않은 채로 남아있는 유형에만 차이가 있습니다. –

0

아니요, 완료 할 필요는 없습니다. 지정되지 않은 멤버는 기본 생성됩니다 (기본 클래스 포함).

분명히 기본 구성 가능하지 않은 멤버는 명시 적으로 초기화되어야합니다. 작은 정수형이나 정수형 등은 초기화되지 않으므로 초기 값은 정의되지 않습니다.

+0

좋습니다. 감사합니다. – alphacentauri

+0

일반적으로 사실이 아닙니다. 지정되지 않은 회원은 특정 규칙에 따라 처리 (또는 처리되지 않음)됩니다. 예를 들어,'int' 타입의 멤버는 초기화되지 않은 채로 남아 있습니다. 그들이 "기본 건설"될 것이라고 말하는 것은 올바르지 않습니다. 당신은 "건설"과 "int"수 없습니다. 생성자가 없습니다. – AnT

1

int이는 내장 타입 0의 생성자의 명시 적 사용 0 (값에 J를 초기화 ++ 프로그래밍 언어 섹션 6.2.8

int j = int(); 

스트로브 스트 룹은 C를 참조 생성자를 가지고있다 따라서 int()는 0을 작성하는 또 다른 방법입니다. 기본 제공 유형의 기본 생성자는 템플릿이 내장 된 유형의 경우에도 기본 생성자를 걱정없이 호출 할 수 있도록하는 데 중요합니다.