공부/C++

전방선언(Forward Declaration)이란?

셩잇님 2023. 6. 12. 02:18
반응형

 

 

1. 전방선언이란?

프로그래밍에서 전방 선언은 식별자(예: 클래스, 함수 또는 변수)의 전체 정의를 제공하기 전에 그 존재를 선언하는 문입니다. 이를 통해 프로그램은 식별자가 완전히 정의되거나 구현되기 전에 식별자를 참조할 수 있습니다.

전방 선언은 주로 식별자를 사용하기 전에 선언해야 하는 C 및 C++에서 사용됩니다. 전방 선언의 주요 목적은 프로그램의 여러 부분 간의 종속성을 해결하거나 순환 종속성을 끊는 것입니다. 또한 전방 선언을 제공하면 컴파일러가 식별자의 존재와 기본 세부 정보를 알 수 있으므로 전체 정의가 제공되기 전에 특정 컨텍스트에서 프로그램을 사용할 수 있습니다. 이를 통해 코드를 유연하게 구성할 수 있으며 두 개 이상의 엔티티가 서로 참조하는 상황을 극복하는 데 도움이 됩니다. 

 

2. 전방선언의 사용
함수: C 또는 C++에서 함수의 정방향 선언은 함수의 전체 구현을 제공하지 않고 함수의 서명(반환 유형, 이름 및 매개변수 유형)을 선언하는 데 사용됩니다. 이를 통해 코드의 다른 부분에서 함수가 정의되기 전에 함수를 호출할 수 있습니다.

클래스: 포워드 선언은 클래스의 전체 구조를 정의하지 않고 클래스의 존재를 선언하는 데 자주 사용됩니다. 이는 두 개 이상의 클래스가 서로를 참조하는 클래스 간의 순환 종속성을 처리할 때 유용합니다. 포워드 선언을 제공하면 완전한 정의 없이도 클래스가 서로를 참조할 수 있습니다.

변수: 포워드 선언은 전체 정의를 제공하지 않고 변수의 존재를 선언하는 데에도 사용할 수 있습니다. 이는 변수를 실제 초기화하거나 할당하기 전에 코드의 다른 부분에서 변수에 액세스하거나 사용해야 할 때 유용합니다.

 

3. 전방선언의 예제

class A;

void foo(A* a) {
  // Do something with a.
}

int main() {
  A* a = new A();
  foo(a);
}

 

A 클래스는 foo() 함수에서 선언되었지만 그 정의는 프로그램 후반부까지 제공되지 않습니다. 이는 컴파일러가 foo() 함수를 컴파일하기 위해 A 클래스의 이름과 유형만 알면 되기 때문에 가능합니다.

4. 전방선언 유의사항

1. 전방 선언은 식별자의 구현에 대한 정보를 제공하지 않습니다. 즉, 컴파일러는 유형 호환성 확인과 같은 식별자 사용에 대한 어떠한 검사도 수행할 수 없습니다.
2. 전방 선언은 변수를 초기화하거나 함수를 호출하는 데 사용할 수 없습니다.
3. 전방 선언은 식별자를 사용하는 모든 파일에 제공되어야 합니다.

 

5. 결론
전방 선언은 엔티티가 엄격한 순서 제약 없이 서로를 참조할 수 있도록 함으로써 코드 구성, 모듈성 및 효율성을 개선하는 데 도움이 될 수 있습니다. 그러나 전방선언을 과도하게 사용하면 코드를 읽고 유지 관리하기가 더 어려워질 수 있으므로 종속성을 해결하는 데 필요한 경우에만 신중하게 사용하는 것이 좋습니다.

 

 

 

반응형

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

유니티를 개발자를 위한 언리얼 엔진 가이드  (0) 2023.06.18
반복자(iterator)란?  (0) 2023.06.12
Nan(Not A Number)란?  (0) 2023.06.12
L-Value와 R-Vaule란?  (0) 2023.06.11
Boost 라이브러리란?  (0) 2023.06.10