C++ 전방선언
게임 개발자가 되기 위해 공부하면서 배우는 여러가지 내용들을 기록하기 위한 블로그입니다. 포스팅에 참고한 모든 강의와 자료들은 하단에 “참조”에 남겨두었습니다.
전방선언(Forward Declaration)
식별자를 정의하기 전, 식별자의 존재를 컴파일러에게 미리 알리는 것
A 헤더파일과 B헤더파일이 있다면, B 파일에서 A를 사용하기 위해서는 A파일을 추가시켜야 합니다. 그러나 이러한 방식은 컴파일의 시간을 증가시킬뿐만 아니라, 헤더 파일에 대한 의존성이 발생하게 됩니다.
전방선언은 이러한 문제점을 해결하기 위해 도입된 방식입니다.
- 컴파일 시간 단축
- 헤더 파일에 대한 의존성 낮춤
전방선언은 해당 객체의 할당 크기를 알 수 없기 때문에, 포인터형으로 선언된 객체에 한하여 사용할 수 있습니다.
클래스 전방선언
헤더파일에서 헤더파일을 포함시키는 행위는 컴파일 시간을 증가시킵니다. 그렇기에 포인터 객체를 선언하기전에, 클래스를 명시함으로써 헤더파일의 중복을 피할 수 있습니다.
함수의 매개변수나, 리턴 타입으로 이름만 사용하게 될 경우 포인터 형이 아닌 객체를 사용할 수 있습니다. 함수 내부와 그 함수를 호출하는 코드에서만 클래스의 크기를 요구하기 때문이다.
B.h
// #inculde <A.h>
class A;
class B
{
public:
A GetA();
private:
A* ptrA;
}