c++ 헤더파일을 굳이 왜 만드는것인가요?

taeseok0712의 이미지

헤더파일에 클래스를 만들어놓고 cpp파일에서 헤더파일을 불러서 쓰던데 이렇게 쓰면 장점이 뭔가요?

익명 사용자의 이미지

장점이야 여럿 있을 수 있겠지만, 가장 직관적인 건 이거죠.
닭과 달걀 중 뭐가 먼저일까요?

class Egg;
 
class Chicken{
public:
	Egg *lay() // signature는 전방 선언으로 어떻게든 된다지만
	{ return new Egg(); } // 이건 어떻게?! (error: invalid use of incomplete type 'class Egg')
};
 
class Egg{
public:
	Chicken *hatch() // 이건 별 문제 없음.
	{ return new Chicken(); } // 이것도.
};

뭐 그 외에도, 인터페이스(헤더)와 구현(소스)를 분리할 수 있게 작성한다던가,
거기서 한 발 더 나아가서 구현이 변경되더라도 인터페이스가 안 바뀔 경우 효율적으로 증분 빌드를 할 수 있게 된다던가
등등 뭐 그런 장점들이 있습니다.

익명 사용자의 이미지

연습문제: 위 코드를 헤더 파일과 소스 파일로 나눠서 컴파일이 되도록 만들어 보시오.