항목 37. 계승된 비가상 함수를 재정의하지 않도록 한다. 전제 클래스 D는 클래스 B를 계승했다. 클래스 B는 비가상함수 mf가 있다. 클래스 D는 비가상함수 mf를 재정의했다. 클래스 B형 포인터 p = new 클래스 D 이다. 이유. 1. p->mf 를 이용하면, 객체D는 정신분열적인 행동을 하게 되기 때문이다! (참조자 역활을 하는건 다 동일하다, 왜냐하면 C++의 다형성 때문이다.) 2008/07/14 14:55 수정 포인터에 정적바인딩 된다. 이 표현이 더 정확하다. 1. p->mf 를 이용하면 D의 mf 가 호출되는것이 아닌 B의 mf 가 호출된다. 이것은 장기적으로 볼때, 난해한 코딩이 되고야 만다.(디버깅이 너무 어려울듯) 2. 만약 클래스 D가 B의 mf와 다르게 해야 한다면, 상속관계..
설계 검색 결과
이유 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); // 거짓, 사람은 학생이 아니니까, 즉 학생만 공부한다..
첫째, 비유적 표현을 써서 머리속에 그림을 그려라 - 구축, 건물짓기와 어떤 도구를 쓸것인가? 라는 비유를 필자를 썻다. 둘째, 프로젝트 투입에 앞서 필요한 모든 시간을 관리자에게 할당 받아라 셋째, 올바른 문제점을 찾아라. - 이 과정에서 다른 문제점이 발견되었다면 다른 문제와 비교해보아라 - 이때는 문제만 찾는다. 오로지 문제만, 해결책 따위는 나중에 찾는다 오로지 문제만 찾는다. 넷째, 요구 조건을 분석하라 - 이때도 역시 요구조건을 분석하고, 다른 요구와 비교해 보아라 - 요구 분석이 매번 바뀐다면, 요구조건 자체를 제약을 걸어 특정시간에만 요구를 수렴해라 다섯째, 아키텍쳐를 짜라 - 각 구조간의 연관관계를 설명할수 있어야 한다. - 머리속에 모든 분류가 정리되어 있어야 한다.(기술될수 있어야 한..
최근댓글