fork(1) download
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. class Glowna
  6. {
  7. int a;
  8. int b;
  9. public:
  10. Glowna(int z, int y):a(z),b(y) {}
  11. virtual int getA() const final { return a; }
  12. };
  13.  
  14. class Pochodna1 : public Glowna
  15. {
  16. int c;
  17. public:
  18. Pochodna1():Glowna(1,2),c(3) {}
  19. };
  20.  
  21. class Pochodna2 : public Glowna
  22. {
  23. int d;
  24. public:
  25. Pochodna2():Glowna(4,5),d(6) {}
  26. int Metoda() { cout << "metoda\n"; return d; }
  27. };
  28.  
  29. class Pochodna3 : public Glowna
  30. {
  31. int e;
  32. public:
  33. Pochodna3():Glowna(7,8),e(9) {}
  34. };
  35.  
  36. int main()
  37. {
  38. vector<Glowna*> tablica;
  39. tablica.push_back(new Pochodna1());
  40. tablica.push_back(new Pochodna2());
  41. tablica.push_back(new Pochodna3());
  42.  
  43. for (int i = 0; i < 3; i++)
  44. {
  45. if (tablica[i]->getA() == 4)
  46. {
  47. Pochodna2* p = (Pochodna2*)tablica[i];
  48. p->Metoda();
  49. }
  50. }
  51. }
Success #stdin #stdout 0s 3228KB
stdin
Standard input is empty
stdout
metoda