#include <iostream>
class Base {
public:
virtual void who() {
std::cout << "Base\n";
}
};
class FirstD: public Base {
public:
void who() {
std::cout << "First derivation\n";
}
};
class SecondD: public Base {
// who() не визначена
};
int main() {
Base baseObj;
Base *p;
FirstD firstObj;
SecondD secondObj;
p = &baseObj;
p->who(); // доступ до who класу Base
p = &firstObj;
p->who(); // доступ до who класу FirstD
p = &secondObj;
p->who(); /* доступ до who() класу Base, оскільки SecondD не перевизначає */
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgpjbGFzcyBCYXNlIHsKcHVibGljOgogICAgdmlydHVhbCB2b2lkIHdobygpIHsKICAgICAgICBzdGQ6OmNvdXQgPDwgIkJhc2VcbiI7CiAgICB9Cn07CgpjbGFzcyBGaXJzdEQ6IHB1YmxpYyBCYXNlIHsKcHVibGljOgogICAgdm9pZCB3aG8oKSB7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJGaXJzdCBkZXJpdmF0aW9uXG4iOwogICAgfQp9OwoKY2xhc3MgU2Vjb25kRDogcHVibGljIEJhc2UgewogICAgLy8gd2hvKCkg0L3QtSDQstC40LfQvdCw0YfQtdC90LAKfTsKCmludCBtYWluKCkgewogICAgQmFzZSBiYXNlT2JqOwogICAgQmFzZSAqcDsKICAgIEZpcnN0RCBmaXJzdE9iajsKICAgIFNlY29uZEQgc2Vjb25kT2JqOwoKICAgIHAgPSAmYmFzZU9iajsKICAgIHAtPndobygpOyAvLyDQtNC+0YHRgtGD0L8g0LTQviB3aG8g0LrQu9Cw0YHRgyBCYXNlCiAgICBwID0gJmZpcnN0T2JqOwogICAgcC0+d2hvKCk7IC8vINC00L7RgdGC0YPQvyDQtNC+IHdobyDQutC70LDRgdGDIEZpcnN0RAogICAgcCA9ICZzZWNvbmRPYmo7CiAgICBwLT53aG8oKTsgLyog0LTQvtGB0YLRg9C/INC00L4gd2hvKCkg0LrQu9Cw0YHRgyBCYXNlLCDQvtGB0LrRltC70YzQutC4IFNlY29uZEQg0L3QtSDQv9C10YDQtdCy0LjQt9C90LDRh9Cw0ZQgKi8KICAgIHJldHVybiAwOwp9Cg==