c++ 객체지향에서 public 상속은 "is-a(…는 …의 일종이다)"를 의미
Derived가 Base로부터 public 상속을 받았다면,
D is a B (D는 B의 일종이다. 하지만, B는 D의 일종이 아니다.)
ex) 학생은 사람의 일종이다, 사람은 학생의 일종이 아니다
새는 날 수 있다.
펭귄은 새이다.
펭귄은 날수 있다?
기본 클래스의 가정이 잘 못되어있다.
여기서 확인할 수 있는것은 public 상속시, 기본 클래스 객체가 가진 모든 것들이 파생 클래스 객체에도 그대로 적용된다고 단정하는 상속이다.
참고
클래스간 맺을 수 있는 관계는 "is -a" 말고도 "has-a", "is-implemented-in-terms-of"방식이 있다. 38,39장에서 알아보자.
이것만은 잊지 말자
- public 상속의 의미는 "is-a"의 의미이다. 기본클래스에 적용되는 모든 것들이 파생클래스 그대로 적용되어야 한다.
'책 정리 > Effective C++ 3rd' 카테고리의 다른 글
항목 34. 인터페이스 상속과 구현 상속의 차이를 제대로 파악하고 구별하자 (0) | 2020.03.09 |
---|---|
항목 33. 상속된 이름을 숨기는 일을 피하자 (0) | 2020.03.09 |
항목 30. 인라인 함수는 미주알고주알 따져서 이해해 두자 (0) | 2020.03.06 |
항목 29. 예외 안전성이 확보되는 그날 위해 싸우고 또 싸우자 (0) | 2020.03.05 |
항목 28. 내부에서 사용하는 객체에 대한 '핸들'을 반환하는 코드는 되도록 피하자 (0) | 2020.02.04 |
댓글