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