부재 : 멤버 객체의 생성 시점과 초기화와 시점

이유

1. 초기화 되지 않은 객체 사용시, 신비롭게 동작하는 현상을 볼수 있기 때문이다.

멤버 객체 생성 시점
1. 초기화 리스트 발동 시점에 생성 된다.

주의점
1. 상수나 참조자는 대입 자체가 불가능하기 때문에 초기화 리스트를 사용하여 초기화 하여야 한다.
2. 멤버 초기화 리스트에서 초기화 하는것이 더 좋다. 왜냐하면 멤버 초기화 리스트는 객체의 생성단계이기 때문이다.
3. 클래스에 나열한 객체의 순서대로 객체가 생성되므로 초기화 리스트 작성시 유념해야 한다.
(단순한 초기화 라면 문제는 없지만, 멤버객체를 이용한 객체 초기화 시에는 문제 발생이 생긴다. 증명 소스코드는 참조링크를 확인할것)

참조
1. 멤버 초기화 리스트란? 코드의 주석을 보면 이해가 더 빠르다.


2. 정적 객체(Static Object)란? 객체 생성 시점부터 프로그램 종료될때까지 살아있는 객체,
3. 정적 객체는 함수안에 있으면 지역 정적 객체라 불리며, 그 외는 비지역 정적 객체라 불려진다.

4. 비지역 정적 객체들의 초기화 순서는 정해있지 않으므로, 비지역 정적 객체 사용시, 주의해야 한다.
(만약 비지역 정적 객체를 사용하려면, 지역 정적 객체를 만들어 사용 하는 편이 좋다)

이것만은 잊지 말자!
1. 기본 타입의 객체는 직접 초기화는 습관을 기르자.
2. 멤버 초기화 리스트를 이용하자.
3. 초기화 리스트에 데이터 멤버 나열시 멤버 선언 순을 지키자.
4. 비지역 정적 객체들의 초기화 순서 문제는 피해서 설계하자.(비지역 객체는 지역 객체로 설정하면 된다!)

관련링크
http://ikpil.tistory.com/295
http://ikpil.tistory.com/294
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기