부재 : 멤버 객체의 생성 시점과 초기화와 시점
이유
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
이유
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
'책 정리 > Effective C++ 3판' 카테고리의 다른 글
항목 9: 객체 생성 및 소멸 과정 중에는 절대로 가상 함수를 호출하지 말자 (0) | 2008.05.31 |
---|---|
항목 8: 예외가 소멸자를 떠나지 못하도록 붙들어 놓자. (0) | 2008.05.31 |
항목 7: 다향성을 가진 기본 클래스에서는 소멸자를 반드시 가상 소멸자로 선언하자 (0) | 2008.05.31 |
항목 6: 컴파일러가 만들어낸 함수가 필요 없으면 확실히 이들의 사용을 금해 버리자 (0) | 2008.05.31 |
항목 5: C++가 은근슬쩍 만들어 호출해 버리는 함수들에 촉각을 세우자. (0) | 2008.05.31 |
항목 3. 낌새만 보이면 const를 들이대 보자! (0) | 2008.05.29 |
항목 2. #define을 쓰려거든 const, enum, inline을 떠올리자. (0) | 2008.05.29 |
항목 1. C++를 언어들의 연합체로 바라보는 안목은 필수 (0) | 2008.05.29 |
Effective C++ 3판을 공부하기에 앞서... (0) | 2008.05.29 |
Effective C++ 3판 3rd 목차 및 링크 (3) | 2008.05.29 |
최근댓글