전방선언 : 식별자를 정의하기 전에 식별자의 존재를 컴파일러에게 알리는 것
헤더 포함 의존성을 최소화하기 위해 사용한다.
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 |