#include <iostream>
#include <vector>
using namespace std;
class Glowna
{
int a;
int b;
public:
Glowna(int z, int y) : a(z), b(y) {}
virtual int metoda() { cout << "Metoda z klasy bazowej\n"; return 0; }
};
class Pochodna1 : public Glowna
{
int c;
public:
Pochodna1() : Glowna(1, 2), c(3) {}
};
class Pochodna2 : public Glowna
{
int d;
public:
Pochodna2() : Glowna(4, 5), d(6) {}
virtual int metoda() override { cout << "Metoda z klasy Pochodna2\n"; return d; }
};
class Pochodna3 : public Glowna
{
int e;
public:
Pochodna3() : Glowna(7, 8) , e(9) {}
};
int main() {
vector<Glowna*> tablica;
tablica.push_back(new Pochodna1());
tablica.push_back(new Pochodna2());
tablica.push_back(new Pochodna3());
for (int i = 0; i < 3; i++) {
tablica[i]->metoda();
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgR2xvd25hCnsKCWludCBhOwoJaW50IGI7CnB1YmxpYzoKCUdsb3duYShpbnQgeiwgaW50IHkpIDogYSh6KSwgYih5KSB7fQoJdmlydHVhbCBpbnQgbWV0b2RhKCkgeyBjb3V0IDw8ICJNZXRvZGEgeiBrbGFzeSBiYXpvd2VqXG4iOyByZXR1cm4gMDsgfQp9OwogCmNsYXNzIFBvY2hvZG5hMSA6IHB1YmxpYyBHbG93bmEKewoJaW50IGM7CnB1YmxpYzoKCVBvY2hvZG5hMSgpIDogR2xvd25hKDEsIDIpLCBjKDMpIHt9Cn07CiAKY2xhc3MgUG9jaG9kbmEyIDogcHVibGljIEdsb3duYQp7CglpbnQgZDsKcHVibGljOgoJUG9jaG9kbmEyKCkgOiBHbG93bmEoNCwgNSksIGQoNikge30KCXZpcnR1YWwgaW50IG1ldG9kYSgpIG92ZXJyaWRlIHsgY291dCA8PCAiTWV0b2RhIHoga2xhc3kgUG9jaG9kbmEyXG4iOyByZXR1cm4gZDsgfQp9OwogCmNsYXNzIFBvY2hvZG5hMyA6IHB1YmxpYyBHbG93bmEKewoJaW50IGU7CnB1YmxpYzoKCVBvY2hvZG5hMygpIDogR2xvd25hKDcsIDgpICwgZSg5KSB7fQp9OwogCmludCBtYWluKCkgewoJdmVjdG9yPEdsb3duYSo+IHRhYmxpY2E7Cgl0YWJsaWNhLnB1c2hfYmFjayhuZXcgUG9jaG9kbmExKCkpOwoJdGFibGljYS5wdXNoX2JhY2sobmV3IFBvY2hvZG5hMigpKTsKCXRhYmxpY2EucHVzaF9iYWNrKG5ldyBQb2Nob2RuYTMoKSk7CgkKCWZvciAoaW50IGkgPSAwOyBpIDwgMzsgaSsrKSB7CgkJdGFibGljYVtpXS0+bWV0b2RhKCk7Cgl9Cn0=