그렇다면, 어떤 헤더 파일을 제거해도 되는지 아래 코드를 보자.
자. 어디를 빼도 되고, 바꾸면 되는지 주석을 달아 보자.
분석
①
iostream 제거#include <iostream>
이 코드는 입출력 스트림에 관한 헤더 파일이다. 하지만 이 코드에선 출력 스트림만 사용 하므로 ostream만 있어도 상관 없다.
②
ostream을 iosfwd로 대체#include <ostream> 을 #include <iosfwd> 로
위의 소스 코드에서 ostream을 쓰지 않고 ostream& 을 사용 하기 때문에, 전방 선언만 있어도 될 것이다. 그것을 헤더 파일로 라이브러리 제작자가 제공하고 있고 그것이 iosfwd 헤더이다. 영어로 "iostream + Forward" 로 축약 시킨듯 보인다. ^^
가이드 라인 : 스트림 포워드 선언(전방 선언)이 필요 할 경우, iosfwd 헤더를 include 하자
③
e.h를 포워드 선언(전방 선언)으로 대체왜냐하면 E 객체는 현재 매개변수와 반환형으로만 쓰여지기 때문에, 포워드 선언만으로도 해결 가능하다. 여기에 대한 자세한 이야기는 Effective C++ 3판을 보도록.
아래 코드는 전부 다 작업한 코드이다.
총평
좀 더 표준 헤더에 대한 기초를 공부할 필요가 있겠다. 포워드 헤더를 찾아보면 몇개 더 있을 듯 하기도 하다.'책 정리 > Exceptional C++' 카테고리의 다른 글
항목 20 : 클래스 동작 원리 (난이도 7) (0) | 2008.10.18 |
---|---|
항목 30 : "Fast Pimpl" 이디엄 (난이도 4) (0) | 2008.10.17 |
항목 29 : 컴파일 방화벽 (난이도 6) (0) | 2008.10.16 |
항목 28 : 컴파일 시간 의존성 줄이기 - 파트 3 (난이도 7) (0) | 2008.10.16 |
항목 27 : 컴파일 시간 의존성 줄이기 - 파트 2 (난이도 6) (0) | 2008.10.16 |
항목 26 : 컴파일 시간 의존성 줄이기 - 파트 1 (난이도 4) (0) | 2008.10.16 |
항목 34 : 이름 검색과 인터페이스 - 파트 4 (난이도 9) (0) | 2008.10.16 |
항목 33 : 이름 검색과 인터페이스 - 파트 3 (난이도 5) (0) | 2008.10.16 |
항목 32 : 이름 검색과 인터페이스 - 파트 2 (난이도 9) (0) | 2008.10.15 |
항목 31 : 이름 검색과 인터페이스 - 파트 1 (난이도 : 9½) (0) | 2008.10.15 |
항목 25 : 개체지향 프로그래밍 (난이도 4) (2) | 2008.10.14 |
최근댓글