#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();
	}
}