왜 그럴까? 쉽게 풀면, 모두다 이렇게 숙지하고 사용하기 때문이다. 이 모두 다 는 C++ 역시 마찬가지여서 이렇게 해야만 한다, (유들있게 한다면, 뭐 대충 해도 되겠지만) 이 의미는 어떤것을 지니게 될까? 학생 is a 사람, 하지만 사람 is a 학생 은 되지 않는것이다. C++로 풀자면 "상속받은 녀석은 상속해준 녀석이 될수 있지만, 상속해준 녀석은 상속받은 녀석이 될수 없다"는것이다. 그렇기 때문에, 이런 오류를 하지 말라고 필자는 강하게 말하고 있다. 왜냐하면 이런 오류가 C++의 엄청난 기능인 "다향성" 기능을 사용할 때 쉽게 범하는 오류이기 때문이다. 그렇다고 현실에 있는것이 바로 이런것들을 적용할수는 없다. 대표적인 예가 정사각형은 직사각형의 일종이지만, 정사각형이 직사각형을 상속하는 형..
public 상속 검색 결과
해당 글 2건
항목 32: public 상속 모형은 반드시 "is-a(...는 ...의 일종이다)"를 따르도록 만들자.
책 정리/Effective C++ 3판
2008. 7. 2. 14:08
항목 35. public 계승이 isa를 모델링하도록 하라.
이유 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); // 거짓, 사람은 학생이 아니니까, 즉 학생만 공부한다..
책 정리/Effective C++ 2판
2008. 5. 11. 23:16
최근댓글