클래스 전방 선언(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
- 참조 하려는 헤더파일을 자신의 헤더파일(.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
댓글
댓글 쓰기