#include <iostream>
using namespace std;
class A { public:
virtual void f(const int i) { cout << "A::f" << endl; }
};
class B : public A { public:
// Hide A's f with new implementations
void f() { cout << "B::f" << endl; }
};
class C : public B { public:
void f() { cout << "C::f" << endl; }
};
int main() {
C c;
B* pb = &c;
pb->f();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQSB7IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZihjb25zdCBpbnQgaSkgeyBjb3V0IDw8ICJBOjpmIiA8PCBlbmRsOyB9CiAgICB9OwogICAgY2xhc3MgQiA6IHB1YmxpYyBBIHsgcHVibGljOgogICAgIC8vIEhpZGUgQSdzIGYgd2l0aCBuZXcgaW1wbGVtZW50YXRpb25zCiAgICAgdm9pZCBmKCkgeyBjb3V0IDw8ICJCOjpmIiA8PCBlbmRsOyB9CiAgICB9OwogICAgY2xhc3MgQyA6IHB1YmxpYyBCIHsgcHVibGljOgogICAgIHZvaWQgZigpIHsgY291dCA8PCAiQzo6ZiIgPDwgZW5kbDsgfQogICAgfTsKICAgIGludCBtYWluKCkgewoKICAgICBDIGM7CiAgICAgQiogcGIgPSAmYzsKICAgICBwYi0+ZigpOwogICAgfQ==