{ 여기서 잠깐, 비공용이란 private 을, 공용이란, public 을 의미 하며, 가상이란 virtual 함수, 비가상이란 non virtual 를 뜻한다. 난 사실 이 제목데로 하는것에 마음에 와 닿지 않는다. 실제로 이렇게 구현 하려고 노력했지만, 경험상 다른 사람들이 봤을 때 익숙치 않아, 가독성이 떨어진다는 의견이 많기 때문이다. 물론 여기에 나 또한 포함 된다. : ) 이 가독성은 익숙치 않기 때문일지도 모른다. 이런 생각 때문에 나는 이것을 놓치기 싫어서, 다른 사람들의 자료를 찾기 시작했고, 정리를 하였다. 기본 예제 // 일반적인 방법의 다형성을 사용하기 위한 예제 #include // 기반 클래스 class Bird { public: virtual void Fly( char *__p..
비가상함수 검색 결과
항목 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와 다르게 해야 한다면, 상속관계..
항목 36. 인터페이스 계승과 구현의 차이점을 이해해라 2008/07/09 14:14 추가 이 이야기의 전제 조건은 어떤 클래스가 부모클래스가 될때, 그 부모클래스의 멤버 함수 선언함에 있어 주의해야 할점을 설명하는 것이다. 인터페이스 계승이란? 1. 메소드의 선언(int class::hehehe(int a); 이것을 계승한다는 뜻으로, 일종의 명령어(이런 이런 함수의 선언만 말한다)만 계승하는 것 이다. 2008/07/09 14:14 추가 2판이라 그런지 단어가 3판하고 좀 차이를 본다. 인터페이스 계승이란 함수의 정의만 계승하는것을 뜻한다. 여기서의 구현이란? 이 메소드들의 내부 동작 즉 메소드 정의(이런 이런 함수의 내부 동작을 말한다.)를 말한다. 이유 1. 각각의 차이점을 모르면 효율적인 설계를..
최근댓글