Virtual Destructor

mail@pastecode.io avatar
unknown
c_cpp
2 years ago
400 B
0
Indexable
Never
#include<iostream>

class A {
public:
  virtual ~A() = 0;
};

A::~A(){ std::cout << "A::~A"; }

class B: public A {
public:
  ~B() { std::cout << "B::~B"; }
};

int main() {
  A *a = new A();  // <--- NON COMPILA, perche' A e' astratta
  A *ab = new B(); // <--- COMPILA, e stampa B::B~ A::~A() quando viene distrutto
  B *b = new B(); // <--- COMPILA, e chiama B::B~ A::~A() quando viene distrutto
}