몇몇 프로그래밍 언어에서 다중 상속을 지원할지 단일 상속을 지원 할지, 프로그래밍 언어가 상속을 어디까지 지원해 주는게 좋을지 논쟁이 계속 되고 있다고 한다. 이 논쟁을 우리도 함께 해보자는 취지로 만들어진 항목이 바로 More Exeptional C++ 24항목에 나와 있다. 1. 다중 상속(MI)은 무엇이고, MI를 C++에 도임함으로써 생길 수 있는 가능성이나 문제점에는 무엇이 있나? 위 그림이 바로 다중 상속(MI)을 아주 잘 보여주고 있다. Bat 은 Mammalia 와 Bird 를 상속하므로써 MI 다. 라고 말할 수 있다. 문제점은 그림에서 봤듯이 Bat 은 간접적으로 Animal 을 두개 가지게 되는 문제가 생긴다.(이런 간접적인 두개일 경우 문제로 지적되는 것이 바로 초기화 문제를 들 수..
다중 상속 검색 결과
내가 C++에 조예가 깊어서 글을 남기는 것이 아니라, Effecitve C++ 을 공부하는 사람들이 이 글을 보고, 도움이 되었으면 하는 생각과, 혹시 내가 틀린것이 있다면 지적해 주시지 않을까 란 생각으로 글을 올리는것임을 미리 밝힙니다. 본론으로 들어와서, 나는 설계 단계에서 다중 상속 할까낭~ 하는 생각을 한적은 있었지만, 지금까지 다중 상속을 해서 코딩한적은 없다. 왜냐하면, 일단 설계단계 조차 난해하고, 조금 복잡해지는 경향이 있었다. 그래서 스스로가 "지금 여기에 꼭 필요한가?" 란 질문에 항상 "지금은 아니오" 라고 답하곤 했기 때문이다. 이번 항목 40의 제목처럼 "다중 상속은 심사숙고해서 사용하자" 로 이야기 하고 있다. 그렇다면 나는 이런 생각을 하곤 한다. "왜!? 무엇 때문에!?"..
항목 43. 다중 계승을 바르게 사용하도록 하라 이유 1. 모호함이 생김(항목 26) 2. 다이아몬드 형태의 계승이 이루어 지게 된다. 해결방법 1. 이유 1번을 처리하기 위한 클래스(인터페이스만을 위한)를 만들어 사용한다. 2. 가상 베이스 클래스를 선언한다..( 등등.. 너무 길다) 3. 다중 계승 .. 유혹을 피해야 한다! 개인적인 생각 필자는 다중 상속에 따라 클래스가 거대해 질수록 점점 복잡해짐을 설명하고 있다. 물론 다중상속을 해선 안된다고 말하진 않는다. 단지 복잡하다는것 뿐이다. 복잡함은 가독성을 떨어뜨리고, 코드의 수정이 더불어 복잡해 짐을 나타낸다. 나의 경우, 점점 복잡함에 따라, 피하는것이 아닌, 포기하는 것이다!
최근댓글