[c++] 가상 소멸자

가상 소멸자는 포인터를 사용하여 파생 클래스의 객체를 가리키는 경우 매우 중요합니다. 만약 기본 클래스에 가상 소멸자가 없고 파생 클래스의 객체를 delete 하는 경우, 파생 클래스의 소멸자는 호출되지 않을 수 있습니다. 이는 메모리 누수(memory leak)나 예기치 않은 동작을 초래할 수 있습니다.

다음은 가상 소멸자가 포함된 C++ 클래스의 예시입니다:

class Base {
public:
    virtual ~Base() {
        // 기본 클래스의 가상 소멸자
    }
};

class Derived : public Base {
public:
    ~Derived() {
        // 파생 클래스의 소멸자
    }
};

이 예시에서 Base 클래스의 소멸자는 virtual로 선언되어 있으므로, Derived 클래스에 대한 포인터를 묵시적으로 형변환하여 사용하더라도 올바른 소멸자가 호출됩니다.

가상 소멸자를 사용함으로써 C++에서의 상속과 다형성을 올바르게 지원할 수 있습니다.