전방선언 : 식별자를 정의하기 전에 식별자의 존재를 컴파일러에게 알리는 것

헤더 포함 의존성을 최소화하기 위해 사용한다.

 

class Game
{
public:
	Game() {}
	~Game() {}

private:
	Player* _player; // Player 헤더가 없으면 컴파일이 불가능
};

 

class Player; // 나중에 정의하겠다고 전방선언

class Game
{
public:
	Game() {}
	~Game() {}

private:
	Player* _player;
    // 최상단 줄을 지우고 class Player* _player 와 같은 형태도 가능하다.
};

 

물론 헤더파일을 포함시키면 해결 되지만, include의 의존성을 줄임으로써 빌드 시간을 줄일 수 있다.

멤버 변수로 선언시에는 포인터인 경우만 가능하고 리턴 타입이나 매개 변수의 경우 객체 타입으로 사용할 수 있다.

 

단, 동적 할당이나 호출하는 경우는 데이터 구조를 모르기때문에 오류가 발생하게 된다.

 

"해당 클래스는 몇 바이트인가?" 라는 질문을 던져보면 알 수 있다.

'C++ > Rookiss C++' 카테고리의 다른 글

[콜백 함수] 함수 포인터  (0) 2022.08.30
[디버깅]  (0) 2022.08.30
[동적 할당] 캐스팅 4총사  (0) 2022.08.29
[동적 할당] 얕은 복사 vs 깊은 복사  (0) 2022.08.29
[동적 할당] 타입 변환  (0) 2022.08.29

+ Recent posts