항목 13. 클래스에 선언된 순서에 따라 멤버 초기화 리스트에 멤버들을 나열한다.

MSVC 2005에선 초기화 리스트 순서와 상관이 없었음, 3판에서도 내용이 없는것으로 보아, C++ 표준에서 처리되어 없어진것으로 생각됨     2008/05/31 12:57 수정

이유
1. 엄연히 멤버 객체 초기화 순서가 있어, 초기화되지 않은 객체 초기화시 신비롭게 동작하기 때문이다.

주의점
1.멤버 초기화 리스트는 클래스 멤버 객체 선언 순으로 나열하여 초기화 하는것이 좋다.

이해해야 할 부분
1. 멤버 객체의 생성은 클래스 객체가 생성 될때 만들어 지고, 아래의 사항으로 넘어 간다.

멤버 객체의 생성 순서
1. 모든 멤버 객체의 메모리 공간 할당
2. 모든 멤버 객체의 메모리 공간에 이름 부여
3. 각 멤버가 초기화 될 건덕지가 있다면, 그 값으로 초기화

멤버 객체의 초기화 순서는 바로 이 3번부터 클래스 멤버 객체 선언 순으로 초기화를 진행한다.

그렇기 때문에
이름만 부여한 상태의 변수를 이용하여
다른 멤버 객체(이름만 부여한 상태의 변수보다 먼저 선언된 멤버 객체)를 초기화 하려 할때,
신비스로운 값으로 초기화가 된다는 점을 말하는것이다.

증명 소스코드 2008/05/31 12:57 수정




  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기