fork download
  1. #include <iostream>
  2. #include <memory>
  3.  
  4. class Base
  5. {
  6. public:
  7. virtual ~Base() {};
  8.  
  9. virtual int getInfo() const = 0;
  10. };
  11.  
  12. class Derived1 : public Base
  13. {
  14. public:
  15. Derived1(int x) : d1_(x) {}
  16. virtual int getInfo() const final { return d1_; }
  17.  
  18. private:
  19. int d1_;
  20. };
  21.  
  22. class Derived2 : public Base
  23. {
  24. public:
  25. Derived2(int x) : d2_(x) {}
  26. virtual int getInfo() const final { return d2_; }
  27.  
  28. private:
  29. int d2_;
  30. };
  31.  
  32. int main()
  33. {
  34. std::unique_ptr<Base> d1(new Derived1(1));
  35. std::unique_ptr<Base> d2(new Derived2(2));
  36.  
  37. std::cout << d1->getInfo() << std::endl << d2->getInfo();
  38.  
  39. return 0;
  40. }
Success #stdin #stdout 0s 3428KB
stdin
Standard input is empty
stdout
1
2