이유
1. public 계승이 isa를 의미하기 때문이다.
해결 방법
아래 예를 통해 어떤 뜻인지 이해 해라.
class Person { .... };
class Student : public Person { .... };
is a 관계이므로
1. 학생은 사람이다. (참)
2. 사람은 학생이다. (거짓)
이게 왜 중요하냐면
void dance(const Person& p); // 사람은 춤을 출수 있다.
void study(const Student& s); // 학생만 공부한다.
Person p; // 사람 등장
Student s; // 학생 등장
dance(p); // 참
dance(s); // 참, 왜냐하면 학생은 사람이니까!
study(p); // 거짓, 사람은 학생이 아니니까, 즉 학생만 공부한다!
study(s); // 참,
착각하기 쉬운것은 학생이 공부 할수 있으니, 일반 사람도 공부 할 수 있다는 생각이다.
(현실에선 맞는 말이지만, 이 코딩에서는 틀린 말이다. 이것때문에 스트레스 받는다면, 적절한 비유는 본인이 찾도록!)
개인적인 생각
1. 상속 관계에 있어서 가장 기초적인 ...
2. 레퍼런스도 되고 포인터도 된다...
3. 모든 자식은 부모의 생각을 이어받지만, 부모는 자식의 생각을 이어받지 못한다!
주의 해야 할 점
isa 관계(public 상속 방식)
가지고 있는 관계(레이어드 방식, 클래스 내부에서 다른 클래스의 객체를 선언하는 방식)
사용해서 구현된 관계(private 상속 방식)
의 각각 사용법을 알고 있어야 한다.
1. public 계승이 isa를 의미하기 때문이다.
해결 방법
아래 예를 통해 어떤 뜻인지 이해 해라.
class Person { .... };
class Student : public Person { .... };
is a 관계이므로
1. 학생은 사람이다. (참)
2. 사람은 학생이다. (거짓)
이게 왜 중요하냐면
void dance(const Person& p); // 사람은 춤을 출수 있다.
void study(const Student& s); // 학생만 공부한다.
Person p; // 사람 등장
Student s; // 학생 등장
dance(p); // 참
dance(s); // 참, 왜냐하면 학생은 사람이니까!
study(p); // 거짓, 사람은 학생이 아니니까, 즉 학생만 공부한다!
study(s); // 참,
착각하기 쉬운것은 학생이 공부 할수 있으니, 일반 사람도 공부 할 수 있다는 생각이다.
(현실에선 맞는 말이지만, 이 코딩에서는 틀린 말이다. 이것때문에 스트레스 받는다면, 적절한 비유는 본인이 찾도록!)
개인적인 생각
1. 상속 관계에 있어서 가장 기초적인 ...
2. 레퍼런스도 되고 포인터도 된다...
3. 모든 자식은 부모의 생각을 이어받지만, 부모는 자식의 생각을 이어받지 못한다!
주의 해야 할 점
isa 관계(public 상속 방식)
가지고 있는 관계(레이어드 방식, 클래스 내부에서 다른 클래스의 객체를 선언하는 방식)
사용해서 구현된 관계(private 상속 방식)
의 각각 사용법을 알고 있어야 한다.
'책 정리 > Effective C++ 2판' 카테고리의 다른 글
항목 40. 레이어링을 통해 가지고 있는 것과 사용하여 구현된것을 모델링하도록 한다. (0) | 2008.05.12 |
---|---|
항목 39. 계층도의 아래쪽 클래스로 다운캐스트 하지 않도록 한다. (0) | 2008.05.12 |
항목 38. 계승된 부재 인자값을 재정의하지 않도록 한다. (0) | 2008.05.12 |
항목 37. 계승된 비가상 함수를 재정의하지 않도록 한다. (2) | 2008.05.12 |
항목 36. 인터페이스 계승과 구현의 차이점을 이해해라 (0) | 2008.05.12 |
인스턴스와 객체지향 설계 (0) | 2008.05.11 |
34. 파일간의 컴파일 의존성을 최소화 하라 (0) | 2008.05.11 |
항목 33. 인라인을 선별적으로 사용하라. (0) | 2008.05.10 |
항목 32. 변수 정의는 가능한 뒤로 늦춰라 (0) | 2008.05.10 |
항목 31. 지역 객체에 대한 참조나 함수 내에서 new를 이용해 초기화된 포인터를 가리키는 참조를 리턴하지 말라 (0) | 2008.05.10 |
최근댓글