public 상속의 막강한 힘은 해본 사람만이 안다. DX 리소스 매니저를 만들 었을 때, 리소스 매니저의 리소스를 상속한 버텍스와 텍스쳐 등을 다형성으로 제어 하고, 사용 할 때, public 상속은 정말 깔끔함을 선사해 준다. 이번 항목을 이런 다형성을 제어하는데 초점을 맞춘다. 예제 코드를 보자. #include class Base { public: virtual void VirFunc() const { std::cout
2008/12 검색 결과
혹시 순수 가상 함수를 사용 해본적이 있는가? 그렇다면 어떤 함수를 순수 가상함수로 만들어서 사용 했는가? 이 번 항목에선 이런 질문들을 정리하기 위한 항목이라 봐도 좋을 듯 싶다. 질문 1. 순수 가상 함수는 무엇인가? 예를 들어라. class pure_virtual_function_class { public: virtual ~pure_virtual_function_class() = 0; }; 질문 2. 순수 가상 함수를 선언하고 정의를 작성하는 이유는? 생각해 낼 수 있는 모든 이유나 상황을 제시하라. ① 순수 가상 소멸자를 위해서 알디 시피 순수 가상 소멸자를 만들어야만 할 경우, 그 소멸자의 본체도 정의해 두어야 한다. 왜냐하면 가상 소멸자의 호출 매카니즘이 파생 소멸자에서 기본 클래스 소멸자를 ..
이번 항목은 한가지 전제를 깔고, 그 문제를 풀어보면서 "앞으로 이런 문제에 부딛쳐 힘에 지칠 때 도움이 될 것이다" 라고 이야기 한다. class BaseA { virtual int ReadBuf( const char* ); /* 우스갯소리 : 이 안에 BaseA가 있다. */ }; class BaseB { virtual int ReadBuf( const char* ); /* 우스갯소리 : 이 안에 BaseB가 있다. */ }; 이 BaseA 와 BaseB에 있는 ReadBuf 는 다른 일을 하지만 같은 시그너처를 가진 함수 이다. 이 두 클래스를 public 상속을 한 Derived 클래스를 만들고, 각기 다른 ReadBuf가 호출 될 수 있도록 오버라이드 하라. 해설 처음에 내가 생각해 낸 방법은,..
이번 항목은 "만약" 이라는 전제와 "상상" 이라는 생각을 통해, 다중 상속을 "자연스럽게 에뮬레이션" 해 보자. 라는 취지로 이야기 한다. 다음 예제코드를 보자 #include #include class A { public: virtual ~A(); std::string Name(); private: virtual std::string DoName(); }; class B1 : virtual public A { std::string DoName(); }; class B2 : virtual public A { std::string DoName(); }; A::~A() { } std::string A::Name() { return DoName(); } std::string A::DoName() { retu..
처음 코딩을 하게 되었을 때, 디버깅의 중요성에 대해서 전혀 모르고 있었다. 어느날 버그는 꼬였고, 중단점을 매우 많이 찍으면서 버그 사냥에 몰두하는 나 자신을 보게 되었다. 이것은 .. 디버깅은 정말 정말 중요하다는 사실을 깨닫게 해준 경험이였다. 디버깅을 위해 F9 키를 누르는건 친근한 작업이었고, 보다 더 한눈에 들어왔으면 좋겠다는 생각이 들기 시작했다. 결국 옵션에 이런것이 있지 않을까? 란 궁금증이 들게 되었고, ... 옵션을 가게 된다. 위 그림에서 "도구" 를 클릭한다. 위와 같은 화면이 뜨면 옵션을 클릭 한다. 다음과 같은 화면이 나오면, "디버깅 탭"으로 이동 한다. "디버깅 탭"에서 "일반 탭" 으로 이동 한다. 이 곳의 세부 설정중 "중단점과 현재 문의 전체 소스 줄 강조 표시" 를 ..
몇몇 프로그래밍 언어에서 다중 상속을 지원할지 단일 상속을 지원 할지, 프로그래밍 언어가 상속을 어디까지 지원해 주는게 좋을지 논쟁이 계속 되고 있다고 한다. 이 논쟁을 우리도 함께 해보자는 취지로 만들어진 항목이 바로 More Exeptional C++ 24항목에 나와 있다. 1. 다중 상속(MI)은 무엇이고, MI를 C++에 도임함으로써 생길 수 있는 가능성이나 문제점에는 무엇이 있나? 위 그림이 바로 다중 상속(MI)을 아주 잘 보여주고 있다. Bat 은 Mammalia 와 Bird 를 상속하므로써 MI 다. 라고 말할 수 있다. 문제점은 그림에서 봤듯이 Bat 은 간접적으로 Animal 을 두개 가지게 되는 문제가 생긴다.(이런 간접적인 두개일 경우 문제로 지적되는 것이 바로 초기화 문제를 들 수..
최근댓글