civilian 님이 쓰신 글 :
: 다중상속이 안되어서 불편한 것의 실제 사용례를 든다면 어떤 것이 있을까요?
: 뭔가 다른 해결방법이 있을듯 합니다만...
다중 상속은 모든 다세포 생물이 父, 母가 있어야 태어나는 것처럼(음... 복제 생물 빼고요.)
사실 너무나 당연하고 자연스런 개념입니다.
단, 父, 母의 DNA가 유전되는 메카니즘 자체가 복잡한 것처럼,
그 사용 방법이 약간 복잡하고 잘못 쓰면 문제가 발생하는 것과 같습니다.
다중 상속이 되지 않으면 실세계의 모든 문제를 프로그래밍하는 것이 불가능합니다.
이러한 예들로, Herb Sutter가 쓴 "More Exceptional C++"의 "Item 24: Why Multiple Inheritance?"
를 읽어보실 것을 권합니다.
다중 상속의 가장 대표적인 예를 들자면, ANSI C++ 표준 라이브러리에서
가장 많이 사용되는 iostream이 있겠네요.
다음과 같이 istream과 ostream으로부터 상속받는 것이죠.
class ostream : virtual public ios { /*..*/ }
class istream : virtual public ios { /*..*/ }
class iostream : public istream, public ostream { /*..*/ }
요새 유행하는 디자인 패턴 중에도 다중 상속에 반드시 의존하는 것이 몇가지 있습니다.
다중 상속이 없는 자바나 오브젝트 파스칼에서는
Observer, Adaptor, Bridge 패턴의 구현이 원칙적으로 불가능합니다.
(된다해도 편법적인 방법밖에는 없죠.)
자세한 것은 다음 참고문헌을 보세요.
"Java vs. C++ - A Critical Comparison," C++ Report, January 1997
|