#include <iostream>
using namespace std;
class Base {
public:
virtual void who()=0;
int s;
// virtual void who() { // визначення віртуальної функції
// cout << "Base"<<endl;
// }
};
class FirstD: public Base {
public:
void who() { // визначення who() для FirstD
cout << "First derivation"<<endl;
}
};
class SecondD: public FirstD {
public:
void who() { // визначення who() для SecondD
cout << "Second derivation"<<endl;
}
};
int main()
{
//Base base;
FirstD fd;
fd.who();
SecondD sd;
sd.who();
// int x=5;
// Base base;
// base.who();
// int *x1;
// Base *y=NULL;
// y=&base;
// // y->who();
// FirstD fd;
// // fd.who();
// y=&fd;
// // y->who();
// SecondD sd;
// // sd.who();
// y=&sd;
// // y->who();
Base **y1=new Base*[3];
y1[0]=&fd;
y1[1]=&fd;
y1[2]=&sd;
for(int i=0;i<3;i++){
y1[i]->who();
}
// Base **q=new Base*[3];
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQmFzZSB7CnB1YmxpYzoKCXZpcnR1YWwgdm9pZCB3aG8oKT0wOyAKCWludCBzOwogICAgLy8gIHZpcnR1YWwgdm9pZCB3aG8oKSB7IC8vINCy0LjQt9C90LDRh9C10L3QvdGPINCy0ZbRgNGC0YPQsNC70YzQvdC+0Zcg0YTRg9C90LrRhtGW0ZcKICAgIC8vICAgICBjb3V0IDw8ICJCYXNlIjw8ZW5kbDsKICAgIC8vIH0KfTsKCmNsYXNzIEZpcnN0RDogcHVibGljIEJhc2UgewpwdWJsaWM6CiAgICB2b2lkIHdobygpIHsgLy8g0LLQuNC30L3QsNGH0LXQvdC90Y8gd2hvKCkg0LTQu9GPIEZpcnN0RAogICAgICAgIGNvdXQgPDwgIkZpcnN0IGRlcml2YXRpb24iPDxlbmRsOwogICAgfQp9OwoKY2xhc3MgU2Vjb25kRDogcHVibGljIEZpcnN0RCB7CnB1YmxpYzoKICAgIHZvaWQgd2hvKCkgeyAvLyDQstC40LfQvdCw0YfQtdC90L3RjyB3aG8oKSDQtNC70Y8gU2Vjb25kRAogICAgICAgIGNvdXQgPDwgIlNlY29uZCBkZXJpdmF0aW9uIjw8ZW5kbDsKICAgIH0KfTsKCmludCBtYWluKCkKewoJLy9CYXNlIGJhc2U7CglGaXJzdEQgZmQ7CglmZC53aG8oKTsKCVNlY29uZEQgc2Q7CglzZC53aG8oKTsKLy8gCWludCB4PTU7Ci8vIAlCYXNlIGJhc2U7Ci8vIAliYXNlLndobygpOwovLyAJaW50ICp4MTsKLy8gCUJhc2UgKnk9TlVMTDsKLy8gCXk9JmJhc2U7Ci8vIC8vCXktPndobygpOwovLyAJRmlyc3REIGZkOwovLyAvLwlmZC53aG8oKTsKLy8gCXk9JmZkOwovLyAvLwl5LT53aG8oKTsKLy8gCVNlY29uZEQgc2Q7Ci8vIC8vCXNkLndobygpOwovLyAJeT0mc2Q7Ci8vIC8vCXktPndobygpOwoJCglCYXNlICoqeTE9bmV3IEJhc2UqWzNdOwoJeTFbMF09JmZkOwoJeTFbMV09JmZkOwoJeTFbMl09JnNkOwoJZm9yKGludCBpPTA7aTwzO2krKyl7CgkJeTFbaV0tPndobygpOwoJfQoJCi8vIAlCYXNlICoqcT1uZXcgQmFzZSpbM107CgkKCQoJCgkKICAgIHJldHVybiAwOwp9Cgo=