책 정리/Effective C#
item 14, 연쇄적인 생성자 호출을 이용하라.
최익필
2010. 7. 2. 02:49
포스트를 만든 목적
Effective C# 을 읽고 내가 공부하기 위해서 만들었다.
내용
관련 링크
여기서 말하는 연쇄적인 생성자 호출이란, 생성자가 호출하는 생성자를 뜻한다.
C++ 에선 이런 경우, private 로 함수 하나 선언해서, 생성자에서 호출 해서 구현하고 있다.
언제 생성자 내에서 생성자를 사용하는게 좋은가?
- 생성자들 구현 코드가 중복될 경우(생성자들의 교집합을 한 생성자에 작성하고, 이를 수행한다.) - 코드 생략
주의해야 할 점은 무엇인가?
- 생성자 내에서 연쇄적으로 호출된 생성자가 또 다시 다른 생성자를 호출하는 행동은 주의해야 한다. 나중에 어떤 생성자를 거쳤는지 알기 힘들기 때문이다.
클래스의 내부 동작 순서를 알면, 이해가 좀 더 쉽게 될 것이다.
클래스의 내부 동작 순서는 어떻게 되는가?
- static 멤버 변수가 있다면, 이를 0으로 초기화
- static 멤버 변수가 있고, 선언시 초기화 루틴이 있다면 수행
- 기반 클래스가 있다면, 기반클래스의 static 생성자 수행
- static 생성자 수행
- 멤버 변수가 있다면, 0으로 초기화
- 멤버 변수가 있고, 선언시 초기화 루틴이 있다면, 수행
- 기반 클래스가 있다면, 기반 클래스의 생성자 수행
- 생성자 수행
결론
- 생성자가 많고, 같은 부분이 겹친다면, 무조건 쓰자.
여담
- 무척 졸리다!
- 위에 "위임 생성자" 라고 표기를 했는데, 마땅히 대체될 명사가 없어, "류광님의 블로그"에서 쓰인데로 썻다.