클래스 분리 시, #include 문의 위치

    C++ 공부를 하다 문득 궁금해졌다.

    클래스 분리가 없는 자바와는 다르게, C++에서는 클래스를 .h 헤더파일과 .cpp 소스파일로 나누어 구현한다.

    좀 더 정확하게 말하면 클래스를 정의부와 구현부로 나누어 작성하는 것이다.

    보통 소스파일은 헤더파일을 include하여 메소드를 구현하게 되는데, 이 떄  궁금한게 생겼다.

    외부 클래스나 라이브러리를 써야하는 상황이라면, 어느 곳에서 include하는게 맞을까?

    .cpp 파일에 쓰면 당연히 상관이 없고, .h 파일에 써도 어차피 헤더파이을 include 하기 때문에 정상적으로 작동한다.

    앞서 몇 시간동안 공부를 하다보니 머리가 둔해져서 이렇다 할 결론이 안 나오더라. 결국 궁금해서 찾아보았다.

     

    그렇게, 2009년에 나와 같은 질문이 올라온 것을 발견한다. 그 댓글 중에 읽고서 바로 납득된 좋은 설명이 있어 가져왔다.

    https://kldp.org/node/105190

    결론적으로 얘기하면, 헤더파일에 불필요한 include 문을 작성했을 경우, 다른 클래스에서 이 헤더파일을 include 할 시, 불필요한 파일까지 같이 include 하게 된다. 따라서, 헤더파일에서 꼭 필요한 파일만을 include 하고 나머지는 .cpp 파일에서 가져오는 것이 바람직하다!

     

     

    시간이 10년 20년 지나도 초심자들은 계속해서 같은 질문을 하나보다.

    알면 알수록 재밌다.

    댓글