2014-08-28 7 views
-3

부모 게임 개체 클래스에서 상속받은 파생 된 플레이어 클래스가있는 게임에서 작업하고 있습니다. 달성하려는 목표는 파생 클래스 소멸자 내에서 기본 클래스 소멸자를 호출하는 것입니다. 내가 그랬어?C++ 상속 기본 클래스 소멸자

예 :

// Base Class 
class A 
{ 
    public: 

     // other code goes here... 

     ~A(); 

    protected: 
     int a; 
} 

// ... 
// ... 

// Base Class Destructor 
A::~A() 
{ 
    // sets a back to 0 
    a = 0; 
} 

// Derived Class 
class B : public A 
{ 
    public: 

     // other code goes here... 

     ~B(); 
} 

// Derived Class Methods 
B::~B() 
{ 
    // Calls for Base Class Destructor, How can i accomplish this 
    A::~A(); 

} 
+3

그렇게하지 않아도됩니다. 자동으로 호출됩니다. 또한 'A'의 소멸자는 'a'에 대한 언급이 어떻게 든 누설되지 않는 한 무의미한 것으로 보입니다. – juanchopanza

+0

하지만 [this] (http://stackoverflow.com/questions/461203/when-to-use-virtual-destructors)를 염두에 두십시오. –

+0

@juanchopanza 그래서 파생 클래스 소멸자를 만들 필요가 없나요? – Nobody

답변

1

부모 클래스의 소멸자가 자동으로 호출된다. 소멸자의 호출 순서는 생성자의 순서와 반대입니다. 그래서 파생 클래스의 소멸자에서 부모 클래스의 필드에 의존하는 것이 좋습니다.

소멸자를 virtual으로 지정하는 것이 좋습니다. 기본 클래스 포인터를 통해 파생 클래스의 객체를 삭제하면 올바른 소멸자를 결정할 필요가 있습니다.

소멸자에 추적 출력을 추가하여 소멸자의 호출 순서를 확인하십시오.