fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class IPureVirtualDestructor {
  5. public:
  6. virtual string description() const = 0;
  7. virtual ~IPureVirtualDestructor() = 0;
  8. };
  9.  
  10. inline IPureVirtualDestructor::~IPureVirtualDestructor() { }
  11.  
  12. class TestClass : public IPureVirtualDestructor {
  13. string name;
  14. public:
  15. TestClass(const string &name) : name(name) {
  16. cout << "Constructor: " << name << endl;
  17. }
  18.  
  19. ~TestClass() {
  20. cout << "Destructor: " << name << endl;
  21. }
  22.  
  23. string description() const {
  24. return string("My name is: ") + name;
  25. }
  26. };
  27.  
  28. int main() {
  29. IPureVirtualDestructor *test = new TestClass("Bob");
  30. cout << "Using: " << test->description() << endl;
  31. delete test;
  32. return 0;
  33. }
Success #stdin #stdout 0s 3464KB
stdin
Standard input is empty
stdout
Constructor: Bob
Using: My name is: Bob
Destructor: Bob