블로그 이미지
이태원에서 사는 다섯식구의 무직 가장. 흰둥에미

카테고리

분류 전체보기 (184)
Itaewon (2)
ryu's?? (1)
20121210이전 (20)
20130827이전 (147)
soo'study (13)
Total37,728
Today0
Yesterday22

항목 36 - 40

20130827이전/EC++ / 2013.01.08 15:25

항목 36. 상속받은 비가상 함수를 파생 클래스에서 재정의하는 것은 절대 금물!

       - 비가상 함수는 정적 바인딩으로 묶이고, 가상 함수는 동적 바인딩으로 묶임.

       - 따라서 파생 클래스를 부모 클래스의 포인터에 넣고 비가상 함수 호출시, 부모의 함수가 수행됨.


항목 37. 어떤 함수에 대해서도 상속받은 기본 매개변수 값은 절대로 재정의하지 말자.

       - 가상 함수는 동적으로 바인딩 되지만, 기본 매개변수는 정적으로 바인딩 된다.

       - 항목 36가 비슷한 연유로, 위험.


항목 38. "has a" 혹은 "is implemented in terms of"를 모형화할 때는 객체 합성을 사용하자.

       - A has a B (A is implemented in terms of B) 이면 B는 A의 멤버로...


항목 39. private 상속은 심사숙고해서 구사하자.

       - private 상속이 필요한 경우는, is implemented in terms of(멤버쯤)처럼 사용하면서 비공개 멤버를 접근할 때,

         혹은 가상 함수를 재정의할 경우에 사용하자.

       - private상속보다 public상속에 객체 합성 조합이 더 좋은 이유

          1. 가상 함수의 재정의를 설계차원에서 막을 때

          2. 컴파일 의존성을 최소화하고 싶을 때.

       - private 상속이 유용한 경우 - 공백 기본 클래스 최적화


항목 40. 다중 상속은 심사숙고해서 사용하자.

       - 마름모꼴의 다중 상속에서, 기본은 데이터 멤버를 중복생성 시키지만, 가상 기본 클래스로 만들면 중복생성되지 않는다.

       - 가상 상속을 쓰면 크기, 속도 비용이 늘어나며, 초기화 및 대입 연산의 복잡도가 커짐.

         따라서 가상 기본 클래스에는 데이터를 두지 않는 것이 현실적으로 가장 실용적

       - 다중 상속을 적절하게 사용하는 법은, 인터페이스 클래스로부터 public 상속과 동시에 구현을 돕는 클래스로부터 private 상속


'20130827이전 > EC++' 카테고리의 다른 글

항목 46 - 48  (0) 2013.01.09
항목 41 - 45  (1) 2013.01.09
항목 36 - 40  (0) 2013.01.08
항목 32 - 35  (0) 2013.01.08
항목 29 - 31  (0) 2013.01.03
항목 26 - 28  (0) 2012.12.22
Posted by 흰둥에미

최근에 달린 댓글

최근에 받은 트랙백

글 보관함