public 상속의 막강한 힘은 해본 사람만이 안다. DX 리소스 매니저를 만들 었을 때, 리소스 매니저의 리소스를 상속한 버텍스와 텍스쳐 등을 다형성으로 제어 하고, 사용 할 때, public 상속은 정말 깔끔함을 선사해 준다.
이번 항목을 이런 다형성을 제어하는데 초점을 맞춘다.
예제 코드를 보자.
자! 이제 부터가 시작이다!
f2() 가 허용 되지 않게 방법을 제시하라!
해설
만약 런타임에 할 수 있다면, dynamic_cast 로 분기 시키면 될 듯 한데. 런타임에 하는 방법은 마지막 방법이니 보류한다. : )
해답을 보니, 의외로 간단하다.
이렇게 해결 한다. friend 사용을 이렇게 사용 한다면,꽤 괜찮은 선택이라 본다. private 상속 하고 friend 로 확장시켜서 원하는것만 제어 한다라.. 음~
총평
원리를 놓고 보자면, private 상속하여, A 는 B이다 기법을 막아두고 "A는 B 이다" 싶은 녀석들만 friend 로 넣어 줌을서 친구인 녀석들만 "A는 B 이다" 라고 정해 두는 기법이다.
'책 정리 > More Exceptional C++' 카테고리의 다른 글
항목 16 : 최적화 미루기 Part 4 : 멀티쓰레드 환경 (0) | 2008.12.18 |
---|---|
항목 15 : 최적화 미루기 Part 3 : 반복자와 참조 ( 난이도 : 6 ) (0) | 2008.12.18 |
항목 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 |
항목 27 : (비)순수 가상 함수 ( 난이도 : 7 ) (0) | 2008.12.16 |
항목 26 : 다중 상속과 샴 쌍둥이 문제 ( 난이도 : 4 ) (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 |
최근댓글