#include <iostream>
using namespace std;
class Base {
void foo() {
bar();
}
public:
virtual void bar() {
cout << "base";
}
};
class Derived:public Base
{
public:
virtual void bar() {
cout << "derived";
}
};
int main() {
Derived* derived = new Derived();
Base* bas = derived;
bas->Base::bar(); //вызвали базовый
cout << endl;
bas->bar(); //вызвали производный
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpjbGFzcyBCYXNlIHsKICAgIHZvaWQgICAgICAgICAgICBmb28oKSB7CiAgICAgICAgYmFyKCk7CiAgICB9CiAgICBwdWJsaWM6CiAgICB2aXJ0dWFsIHZvaWQgICAgYmFyKCkgewogICAgICAgIGNvdXQgPDwgImJhc2UiOwogICAgfQp9OwoKY2xhc3MgRGVyaXZlZDpwdWJsaWMgQmFzZQp7CglwdWJsaWM6CiAgICB2aXJ0dWFsIHZvaWQgICAgYmFyKCkgewogICAgICAgIGNvdXQgPDwgImRlcml2ZWQiOwogICAgfQp9OwoKCgppbnQgbWFpbigpIHsKICAgIERlcml2ZWQqIGRlcml2ZWQgPSBuZXcgRGVyaXZlZCgpOwogICAgQmFzZSogYmFzID0gZGVyaXZlZDsKICAgIGJhcy0+QmFzZTo6YmFyKCk7IC8v0LLRi9C30LLQsNC70Lgg0LHQsNC30L7QstGL0LkKICAgIGNvdXQgPDwgZW5kbDsKICAgIGJhcy0+YmFyKCk7ICAgICAgIC8v0LLRi9C30LLQsNC70Lgg0L/RgNC+0LjQt9Cy0L7QtNC90YvQuQp9