Tags
- postman pre-request
- Interaction developer
- solidity
- Android/iOS Developer
- 우수한 프런트 개발자
- postman csv
- oracle
- Java
- web developer
- 다빈치 리졸브
- emplace_back
- postman session
- C++
- Front-end developer
- postman automations
- Android
- MFC
- Intellij
- postman html parse
- postman collection variables
- LSL_Script
- c#
- postman
- 프런트엔드
- postman excel
- postman tests
- 좋은 개발자
- Unity
- UI/UX Engineer
- postman collection
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Archives
- Today
- Total
david's daily developer note
[C,C++] 클래스 전방 선언(Forward declarations)와 상호 참조 헤더 파일 본문
[Develop] Native/C++ , C
[C,C++] 클래스 전방 선언(Forward declarations)와 상호 참조 헤더 파일
mouse-david 2012. 2. 21. 14:30728x90
클래스 전방 선언 개념을 정리한다.
C++로 작성된 클래스 A와 클래스 B 가 있다. 그리고 A클래스는 B를 참조한다.
이를 위해서 우리는 A에서 B클래스 해더를 Include할 것이다.
그러나, #include 관계가 복잡하거나, 해비 참조 해더가 있다면(API 정의가 포함된 헤더와 같이..)
간단한 수정에도 참조하는 모든 파일이 다시 컴파일 될 것이다.
작은 프로그램이야 문제없지만 프로젝트가 몇 백개가 넘어가는 거대한 솔루션에서는.. 불편한 상황이다.
전방선언 (Forward declarations)을 사용하면 이러한 상황을 일부 회피할 수 있다.
(전방선언의 좋은점은 참조하려는 해더파일에 변경이 생겨도 참조 하는 해더파일에서는
재컴파일이 이루어 지지 않는다는 점이다.)
#include "A.h"
class B
{
public:
A* a;
};
전방선언의 간단한 예.
class A;
class B
{
public:
A* a;
};
단, 주의해야 할 점이 있다. 전방선언자를 사용할 경우에는 그 클래스 관련 객체는 포인터형으로 정의해야 한다는 것이다. 만약 포인터형이 아닌 객체를 생성할 경우 전방선언자의 특징상 그 객체의 크기를 정확히 파악하여 할당을 못해주기 때문이다. (해당 클래스가 있다는 정보만 알고 사이즈를 모른다.)
+ 전방 선언은 클래스와 구조체가 가능하고, 함수 및 멤의 정의시에 포인터 형태가 아니라 참조 형태도 가능하다.
728x90
'[Develop] Native > C++ , C' 카테고리의 다른 글
[C,C++] 실행파일이 만들어지는 단계 (0) | 2018.05.17 |
---|---|
[C,C++] 디버깅++ (0) | 2012.03.06 |
[C,C++] C++ Macro vs inline (0) | 2012.03.03 |
[C,C++] 매크로로 구현한 Double linked list (0) | 2010.08.26 |
[C,C++] 함수를 인자로 전달하는 방법 (2) | 2010.06.27 |