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)
};
slide: Static versus dynamic selection