class P; class C; void f(P* p) { cout << "f(P*)"; }(1)
void f(C* c) { cout << "f(C*)"; }(2)
class P { public: virtual void f() { cout << "P::f"; }(3)
}; class C : public P { public: virtual void f() { cout << "C::f"; }(4)
};
class P; class C; void f(P* p) { cout << "f(P*)"; }(1)
void f(C* c) { cout << "f(C*)"; }(2)
class P { public: virtual void f() { cout << "P::f"; }(3)
}; class C : public P { public: virtual void f() { cout << "C::f"; }(4)
};