컴파일러는 소스단위로 컴파일을 하기 때문에 언어에서 제공해주는 기본 키워드가 아니라면
사용자가 정의한 키워드는 사용하기 전에 선언이 되어있어야합니다.
하지만 헤더 파일에 다른 헤더파일을 포함하다보면 나중에 헤더끼리 꼬이는 경우가 생기므로
단순히 해당 키워드는 사용자가 정의한 어떠한 형식이라고 컴파일러에게 알려주는 경우에 자주
쓰입니다.
헤더에 저렇게 선언을 하고 소스에서 해당 클래스 또는 구조체 등이 들어있는 헤더를 포함하는
형식입니다.
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
컴파일러에게 ABC란 클래스의 이름이다 라고 알려주는 셈입니다.
컴파일 할때 구체적인 정의는 필요없고, ABC라는게 클래스라는 것만 알면 충분한 경우가있습니다.
대표적인 예가 포인터나 레퍼런스만 선언할 경우입니다.
이럴때 굳이 정의를 포함시키면 컴파일 의존성도 증가하고, 쌍방 참조같은 경우는 구조적으로 전방선언을 이용하지 않을수가 없구요.
전방선언이라고
전방선언이라고 합니다.
컴파일러는 소스단위로 컴파일을 하기 때문에 언어에서 제공해주는 기본 키워드가 아니라면
사용자가 정의한 키워드는 사용하기 전에 선언이 되어있어야합니다.
하지만 헤더 파일에 다른 헤더파일을 포함하다보면 나중에 헤더끼리 꼬이는 경우가 생기므로
단순히 해당 키워드는 사용자가 정의한 어떠한 형식이라고 컴파일러에게 알려주는 경우에 자주
쓰입니다.
헤더에 저렇게 선언을 하고 소스에서 해당 클래스 또는 구조체 등이 들어있는 헤더를 포함하는
형식입니다.
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
컴파일러에게 ABC란
컴파일러에게 ABC란 클래스의 이름이다 라고 알려주는 셈입니다.
컴파일 할때 구체적인 정의는 필요없고, ABC라는게 클래스라는 것만 알면 충분한 경우가있습니다.
대표적인 예가 포인터나 레퍼런스만 선언할 경우입니다.
이럴때 굳이 정의를 포함시키면 컴파일 의존성도 증가하고, 쌍방 참조같은 경우는 구조적으로 전방선언을 이용하지 않을수가 없구요.
답변 감사합니다^^
클래스의 정의까지 포함시키지 않고도
이름만 알려주고 그 클래스를 참조한다는 의미군요~
답변 감사합니다^^
댓글 달기