전방선언 (forward Declartion)
프로그램 규모가 커지다보면 파일간의 의존도가 높아져서 컴파일시간이 늘어난다.
- ‘#include’ 의존성을 최소화에 목적
조건
- 포인터 및 참조 형태로 이름만 참조가 가능하다.
1 | class A; // 전방선언 |
- 매개변수, 리턴타입을 위한 이름만 참조한다.
1 | class A; |
전방선언을 할경우, 컴파일러에게 심볼 테이블에 추가하고, 그 클래스의 정의를 제공해주겠다고 약속한다.
cpp 파일에는 헤더 include가 들어간다. (클래스 정의)
Type Slice
부모, 자식 클래스의 오브젝트를 대입시킬때, 자식클래스의 객체를 부모의 객체로 대입시킬때 일부 정보가 사라지는 문제. (Upcast)
1 | class Human |
H 객체에는 stNum에 대응되는 값이 없기 때문에, 날라가게된다.
반대로 한다면?
1 | pS = (Student *)&H; |
참고한 곳의 저자가 부모의 포인터는 자식을 가르킬수 있다는 점을 기억해야된다고 함.