fork download
  1. #include <cstdio>
  2. #include <memory>
  3. using namespace std;
  4.  
  5. class A1 {
  6. public:
  7. A1() { printf("A1\n"); }
  8. virtual ~A1() { printf("~A1\n"); }
  9.  
  10. virtual void p() = 0;
  11. };
  12.  
  13. class B1 : public A1 {
  14. public:
  15. void p() { printf("1\n"); }
  16. };
  17.  
  18. class B2 : public A1 {
  19. public:
  20. void p() { printf("2\n"); }
  21. };
  22.  
  23. class B3 : public A1 {
  24. public:
  25. void p() { printf("3\n"); }
  26. };
  27.  
  28. int main() {
  29. shared_ptr<A1> pointer(new B1);
  30. pointer->p();
  31.  
  32. pointer.reset(new B2);
  33. pointer->p();
  34.  
  35. pointer.reset(new B3);
  36. (*pointer).p();
  37.  
  38. return 0;
  39. }
Success #stdin #stdout 0s 2988KB
stdin
Standard input is empty
stdout
A1
1
A1
~A1
2
A1
~A1
3
~A1