#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;
}
CiNpbmNsdWRlIDxpb3N0cmVhbT4KY2xhc3MgQmFzZSB7CnB1YmxpYzoKICAgIHZpcnR1YWwgdm9pZCB3aG8oKSB7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJCYXNlXG4iOwogICAgfQp9OwoKY2xhc3MgRmlyc3REOiBwdWJsaWMgQmFzZSB7CnB1YmxpYzoKICAgIHZvaWQgd2hvKCkgewogICAgICAgIHN0ZDo6Y291dCA8PCAiRmlyc3QgZGVyaXZhdGlvblxuIjsKICAgIH0KfTsKCmNsYXNzIFNlY29uZEQ6IHB1YmxpYyBCYXNlIHsKICAgIC8vIHdobygpINC90LUg0LLQuNC30L3QsNGH0LXQvdCwCn07CgppbnQgbWFpbigpIHsKICAgIEJhc2UgYmFzZU9iajsKICAgIEJhc2UgKnA7CiAgICBGaXJzdEQgZmlyc3RPYmo7CiAgICBTZWNvbmREIHNlY29uZE9iajsKCiAgICBwID0gJmJhc2VPYmo7CiAgICBwLT53aG8oKTsgLy8g0LTQvtGB0YLRg9C/INC00L4gd2hvINC60LvQsNGB0YMgQmFzZQogICAgcCA9ICZmaXJzdE9iajsKICAgIHAtPndobygpOyAvLyDQtNC+0YHRgtGD0L8g0LTQviB3aG8g0LrQu9Cw0YHRgyBGaXJzdEQKICAgIHAgPSAmc2Vjb25kT2JqOwogICAgcC0+d2hvKCk7IC8qINC00L7RgdGC0YPQvyDQtNC+IHdobygpINC60LvQsNGB0YMgQmFzZSwg0L7RgdC60ZbQu9GM0LrQuCBTZWNvbmREINC90LUg0L/QtdGA0LXQstC40LfQvdCw0YfQsNGUICovCiAgICByZXR1cm4gMDsKfQ==