Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 순수 가상 소멸자가 필요한 이유는 무엇입니까?

<시간/>

C++ 프로그램에서 순수 가상 소멸자를 허용하는 부작용은 없습니다. 파생 클래스의 소멸자가 기본 클래스 소멸자보다 먼저 호출되므로 순수 가상 소멸자에 대한 함수 본문을 제공해야 하므로 함수 본문을 제공하지 않으면 객체 소멸 중에 호출할 항목을 찾지 못하고 오류가 발생합니다. . 순수 가상 소멸자를 정의하여 추상 클래스를 쉽게 만들 수 있습니다.

예시 코드

#include <iostream>
using namespace std;

class B {
   public: virtual ~B()=0; // Pure virtual destructor
};

B::~B() {
   cout << "Pure virtual destructor is called";
}

class D : public B {
   public: ~D() {
   cout << "~Derived\n";
   }
};

int main() {
   B *b = new D();
   delete b;
   return 0;
}

출력

~Derived
Pure virtual destructor is called