잊지 않겠습니다.

상속관계인 Class를 Derived Class, Base Class라고 할때, DerivedClass를 생성할 때 생성자의 순서는 다음과 같다.

  • Derived class의 초기화된 변수들
  • Base class의 초기화된 변수들
  • Base class의 생성자
  • Derived class의 생성자

 

따라서, override 된 함수들을 Base class의 생성자에 넣게 되는 경우에는 Derived class의 생성자에서 호출이 될 수 없다.

이때에는 Init() 또는 Initialized() 함수를 따로 구성시켜서, 생성 이후에 재초기화를 시켜줘야지 된다.

이런 경우를 two-phase construction 이라고 부른다.

Posted by Y2K
,