이번 항목은 한가지 전제를 깔고, 그 문제를 풀어보면서 "앞으로 이런 문제에 부딛쳐 힘에 지칠 때 도움이 될 것이다" 라고 이야기 한다.
이 BaseA 와 BaseB에 있는 ReadBuf 는 다른 일을 하지만 같은 시그너처를 가진 함수 이다. 이 두 클래스를 public 상속을 한 Derived 클래스를 만들고, 각기 다른 ReadBuf가 호출 될 수 있도록 오버라이드 하라.
해설
처음에 내가 생각해 낸 방법은, "상속만 하고 아무것도 하지않는다" 이다. 여기에 문제점은 바로 Derived 에서 ReadBuf 를 호출 할 수 없다는 데에 있다.
처음 생각해 낸 코드
결국 나는 해답을 봤고, 무릎을 탁 쳤다! "wrapper class!" 그렇다 한번 더 감싸서 이름을 변경시키면 된다 다음 코드를 보자.
해결 코드
이런식으로 해결 하면 된다. : )
총평
wrapper 란 개념은 ... 손오공 초사이어인으로 변하게 하는 강함을 보여준다. 그 강함은 "새롭게 꾸며 더 강하게(유용)"사용 하자로 말 할 수 있겠다.
'책 정리 > More Exceptional C++' 카테고리의 다른 글
항목 14 : 최적화 미루기 Part 2 : 미루기에 대한 소개 ( 난이도 : 3 ) (0) | 2008.12.18 |
---|---|
항목 13 : 최적화 미루기(lazy optiomization) Part 1 : 그저 평범한 String (난이도 : 2 ) (0) | 2008.12.18 |
항목 12 : inline ( 난이도 : 4 ) (0) | 2008.12.17 |
항목 28 : 다형성 제어하기 ( 난이도 : 3 ) (0) | 2008.12.16 |
항목 27 : (비)순수 가상 함수 ( 난이도 : 7 ) (0) | 2008.12.16 |
항목 25 : 다중 상속 에뮬레이션 ( 난이도 : 5 ) (0) | 2008.12.16 |
항목 24 : 왜 다중 상속을? ( 난이도 : 6 ) (0) | 2008.12.16 |
항목 31 : 스마트 포인터 멤버 Part 2 : ValuePtr을 향해 ( 난이도 : 6 ) (0) | 2008.12.14 |
항목 30 : 스마트 포인터 멤버 Part 1 : auto_ptr로 인해 생길 수 있는 문제 ( 난이도 : 5 ) (0) | 2008.12.14 |
항목 29 : auto_ptr 사용 하기 (난이도 : 5) (0) | 2008.12.14 |
최근댓글