fork download
  1. #include <iostream>
  2. #include <memory>
  3.  
  4. class Interface
  5. {
  6. public:
  7. virtual ~Interface()
  8. {
  9. std::cout << __func__ << std::endl;
  10. }
  11. virtual void Do() = 0;
  12. };
  13.  
  14. class Real : public Interface
  15. {
  16. public:
  17. void Do() final
  18. {
  19. std::cout << "DO" << std::endl;
  20. }
  21.  
  22. ~Real()
  23. {
  24. std::cout << __func__ << std::endl;
  25. }
  26. };
  27.  
  28. int main() {
  29.  
  30. std::unique_ptr<Interface> ptr;
  31.  
  32. Real* realPtr = new Real();
  33. ptr = std::unique_ptr<Interface>(realPtr);
  34.  
  35. ptr.reset(new Real());
  36.  
  37. return 0;
  38. }
Success #stdin #stdout 0.01s 5280KB
stdin
Standard input is empty
stdout
~Real
~Interface
~Real
~Interface