항목 37. 계승된 비가상 함수를 재정의하지 않도록 한다.
항목 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와 다르게 해야 한다면, 상속관계..
책 정리/Effective C++ 2판
2008. 5. 12. 01:30
최근댓글