장점이야 여럿 있을 수 있겠지만, 가장 직관적인 건 이거죠.
닭과 달걀 중 뭐가 먼저일까요?
class Egg;class Chicken{public:
Egg *lay()// signature는 전방 선언으로 어떻게든 된다지만{returnnew Egg();}// 이건 어떻게?! (error: invalid use of incomplete type 'class Egg')};class Egg{public:
Chicken *hatch()// 이건 별 문제 없음.{returnnew Chicken();}// 이것도.};
뭐 그 외에도, 인터페이스(헤더)와 구현(소스)를 분리할 수 있게 작성한다던가,
거기서 한 발 더 나아가서 구현이 변경되더라도 인터페이스가 안 바뀔 경우 효율적으로 증분 빌드를 할 수 있게 된다던가
등등 뭐 그런 장점들이 있습니다.
장점이야 여럿 있을 수 있겠지만, 가장 직관적인 건
장점이야 여럿 있을 수 있겠지만, 가장 직관적인 건 이거죠.
닭과 달걀 중 뭐가 먼저일까요?
뭐 그 외에도, 인터페이스(헤더)와 구현(소스)를 분리할 수 있게 작성한다던가,
거기서 한 발 더 나아가서 구현이 변경되더라도 인터페이스가 안 바뀔 경우 효율적으로 증분 빌드를 할 수 있게 된다던가
등등 뭐 그런 장점들이 있습니다.
연습문제: 위 코드를 헤더 파일과 소스 파일로 나눠서
연습문제: 위 코드를 헤더 파일과 소스 파일로 나눠서 컴파일이 되도록 만들어 보시오.
댓글 달기