클래스 전방 선언(Forward declarations)과 상호 참조 헤더 파일

* 전방 선언
- 참조 하려는 헤더파일을 자신의 헤더파일(.h)이 아닌 몸체(.cpp)에 포함하는 방식
- 불필요한 헤더 파일이 include되는 것을 방지(컴파일 속도 향상)
- 참조 헤더파일이 변경 되어도 재컴파일을 하지 않는다(컴파일 속도 향상)
- 클래스가 상호 참조하게 되는 구조에서 사용
- 참조하려는 클래스를 포인터형으로 선언하는 경우에만 사용 가능
- 전방선언으로 참조하는 클래스의 구체적 크기에 대해 알지 못한다.(포인터로만 선언)



예시) a라는 클래스에서 b클래스를 상호 참조 하는 경우
=== a.h ===
class b; //전방선언. b클래스 사용 될거에요

class a
{
    b* bbb; //b클래스를 bbb라는 이름으로 사용할거에요(동적할당 받지 않는다!!)
public:
    a();
    ~a();
}


=== a.cpp ===
#include "a.h"
#include "b.h" //전방선언한 b클래스의 헤더파일을 include

댓글