항목 50 : 기반 클래스 디스트럭터는 공용과 가상 또는 보호와 비가상으로 만들어라. ( Make base class destructors public and virtual, or protected and nonvirtual. )
{ 이번 항목은 좀 역발상으로 이야기를 쫒아 본다. 기반 클래스의 디스트럭터가 public 과 virtual 이라면, 파생 클래스에게 어떠한 영향을 미치는가? 1. 객체 생성이 자유롭다. 2. 객체의 완전한 소멸이 기반 객체의 포인터로도 가능하다. 그렇다면, protected 와 non-virtual 이라면? 1. 객체 생성이 friend나 상속 기반에서만 이루어 진다. 2. 객체의 완전한 소멸은 항상, 파생 클래스에서만 가능하다. 이 두가지 방식을 따라야 하는 이유는 무엇인가? 메모리가 누수될 가능성이 무척 커진다. 이해 못하겠다. 예제를 보여 달라. #include #include // example class Base { public: ~Base() // non virtual { std::cout
책 정리/C++ Coding Standards : C++ 코딩의 정석
2009. 4. 3. 11:21
최근댓글