1 분 소요

전방선언

식별자를 정의하기 전 미리 식별자를 컴파일러에 알리는 것을 뜻한다.
원래는 식별자를 사용하기 위해선 정의된 헤더를 불러와야 하지만 전방선언(forward declaratioin)을 이용해 헤더를 선언하지 않아도 사용할 수 있다.

사용법

클래스 타입 전방선언

class MyObject; // 타입 전방선언

MyObject* ob1;

타입이 클래스임을 알리는 전방선언(forward declaratioin)이다. 이렇게 헤더를 선언하지 않고 사용하는 것 이여서 포인터 객체만 이용 가능하다. 직접적인 함수를 이용하려 할 시 오류가 발생한다. 위에 이미 전방선언을 했다면 후에 같은 타입 클래스를 사용하면 전방선언을 해주지 않아도 된다.

  • 헤더를 불러오는 시간이 줄어든다.
    • 컴파일 단계에선 헤더 선언시 주석을 포함한 모드 코드를 불러옴
  • 의존성이 줄어든다

함수 전방선언

int add(int a, int b); // 함수 전방선언
int main(){
	std::cout << add(2,3) << std::endl;
}

int add(int a, int b){
	return a+b;
}

만약 함수 전방선언을 하지 않고 코드를 실행할 시 main에서 add 함수를 실행하려 할 때 add 함수가 declaration 되어 있지 않다고 오류가 나올 것이다. 이는 C++가 위에서 부터 아래로 한줄 씩 코드를 읽는 컴파일 언어이기 때문에 발생하는 것인데 add함수는 아래에 정의(difinition)되어 있지만 main에서 사용할 때 까지 add 함수를 발견하지 못해서 발생하는 문제다.

그렇기에 위와 같이 전방선언을 통해서 컴파일러에 미리 알려주면 컴파일이 완료된다.

Summary

  • 타입 전방선언
    • 헤더를 생략해 컴파일 속도 향상
    • 헤더 의존성 감소
    • 타입을 직접 사용하지 않는 경우에만 사용
  • 함수 전방선언
    • 함수를 미리 선언해 선언 위치에 따른 컴파일 오류 해결

댓글남기기