[질문] C++ 생성자에서 초기값 줄때 warning 메세지 도와주세요

oruddk의 이미지

클래스의 생성자에서 다음과 같이

Log::Log (bool debugFlag, bool appFlag, bool rawFlag) : debugFlag_ (debugFlag), appFlag_ (appFlag), rawFlag_ (rawFlag) {}

클래스 멤버에 초기값을 주려고 합니다.

컴파일 하면 다음과 같은 warning 이 나오는 데요

Log.h: In constructor `Log::Log(bool, bool, bool)':
Log.h:102: warning: `Log::debugFlag_' will be initialized after
Log.h:100: warning:   `bool Log::appFlag_'
Log.cpp:114: warning:   when initialized here

생성자에서 초기값을 줄때 다른 방법이 있는 건지 궁금합니다.

그럼 모두 좋은 하루되세요^^

doldori의 이미지

초기화 리스트의 순서는 debugFlag_, appFlag_, rawFlag_의 순서인데,
이들 멤버 변수가 선언된 순서가 다르기 때문인 듯 합니다. 주의할 것은 초기화
순서는 초기화 리스트의 순서가 아니라 멤버 선언 순서로 되는데, 경우에 따라
이들 차이로 인해 미묘한 문제가 발생할 수 있기 때문에 경고를 주는 것입니다.

멤버 선언 순서와 초기화 리스트의 순서를 일치시키는 것이 바람직한 스타일입니다.

oruddk의 이미지

좋은 정보 감사합니다.

멤버선언 순서를 수정했더니 컴파일 잘되네요

좋은하루되세요