#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
virtual void f() { cout << "B::f" << endl; }
};
class C : public B { public:
virtual void f() { cout << "C::f" << endl; }
};
int main() {
C c;
B* pb = &c;
pb->f();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQSB7IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZihjb25zdCBpbnQgaSkgeyBjb3V0IDw8ICJBOjpmIiA8PCBlbmRsOyB9CiAgICB9OwogICAgY2xhc3MgQiA6IHB1YmxpYyBBIHsgcHVibGljOgogICAgIC8vIEhpZGUgQSdzIGYgd2l0aCBuZXcgaW1wbGVtZW50YXRpb25zCiAgICAgdmlydHVhbCB2b2lkIGYoKSB7IGNvdXQgPDwgIkI6OmYiIDw8IGVuZGw7IH0KICAgIH07CiAgICBjbGFzcyBDIDogcHVibGljIEIgeyBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGYoKSB7IGNvdXQgPDwgIkM6OmYiIDw8IGVuZGw7IH0KICAgIH07CiAgICBpbnQgbWFpbigpIHsKCiAgICAgQyBjOwogICAgIEIqIHBiID0gJmM7CiAgICAgcGItPmYoKTsKICAgIH0=