클래스의 변수 iSize
와 pArr
가 이니셜라이저에 작성한 순서대로 할당될 것이라고 생각했다. 그래서 iSize
가 초기화 됐을 거라 가정하고 이니셜라이져에서 바로 이 변수를 사용했다.
하지만 자꾸 예외가 발생했고 구글링 결과, 멤버 변수의 초기화는 이니셜라이저 작성 순서가 아닌 클래스에 선언한 순서대로 진행된다는 걸 알게 됐다.
클래스에서 변수 선언 순서를 바꾸고 다시 실행하자 오류가 발생하지 않게 됐다.
하지만 멤버 변수가 아닌 인자로 넘어오는 값을 초기화에 사용하는 게 더 맞아 보인다.
C++에서 멤버의 초기화 순서는 ‘이니셜라이저 리스트의 나열 순서’가 아니라 ‘클래스 내 선언 순서’로 고정된다. 클래스에서 먼저 선언된 멤버가 먼저 초기화된다는 걸 명심하자.