fork(1) download
  1. #include <iostream>
  2. #include <memory>
  3. #include <vector>
  4. #include <string>
  5.  
  6. class Owoc
  7. {
  8. public:
  9. Owoc(std::string const& kraj) :
  10. kraj_(kraj)
  11. {
  12. std::cout << "Nowy owoc.\n";
  13. }
  14.  
  15. virtual ~Owoc()
  16. {
  17. std::cout << "Kasuje owoc.\n";
  18. }
  19.  
  20. virtual void wypisz() = 0;
  21.  
  22. protected:
  23. std::string kraj_;
  24. };
  25.  
  26. class Banan : public Owoc
  27. {
  28. public:
  29. Banan(std::string const& kraj) : Owoc(kraj)
  30. {
  31. std::cout << "Banan\n";
  32. }
  33.  
  34. ~Banan()
  35. {
  36. std::cout << "Kasuje banana.\n";
  37. }
  38.  
  39. virtual void wypisz() final
  40. {
  41. std::cout << "Jestem bananem i jestem zolty, kraj pochodzenia: "
  42. << kraj_ << std::endl;
  43. }
  44. };
  45.  
  46. class Truskawka : public Owoc
  47. {
  48. public:
  49. Truskawka(std::string const& kraj) : Owoc(kraj)
  50. {
  51. std::cout << "Truskawka\n";
  52. }
  53.  
  54. ~Truskawka()
  55. {
  56. std::cout << "Kasuje truskawke.\n";
  57. }
  58.  
  59. virtual void wypisz() final
  60. {
  61. std::cout << "Jestem truskawka i jestem czerwona, kraj pochodzenia: "
  62. << kraj_ << std::endl;
  63. }
  64. };
  65.  
  66. int main() {
  67. std::vector<std::unique_ptr<Owoc> > owoce;
  68. owoce.emplace_back(new Banan("Etiopia"));
  69. owoce.emplace_back(new Truskawka("Polska"));
  70.  
  71. std::cout << "Wypisz owoce:\n";
  72. for(auto const& o : owoce)
  73. o->wypisz();
  74.  
  75. return 0;
  76. }
  77.  
Success #stdin #stdout 0s 3432KB
stdin
Standard input is empty
stdout
Nowy owoc.
Banan
Nowy owoc.
Truskawka
Wypisz owoce:
Jestem bananem i jestem zolty, kraj pochodzenia: Etiopia
Jestem truskawka i jestem czerwona, kraj pochodzenia: Polska
Kasuje banana.
Kasuje owoc.
Kasuje truskawke.
Kasuje owoc.