void f(int, double); void f(double, int); f(1,2.0);f(int, double);
f(2.0,1);f(double,int);
f(1,1);error: ambiguous
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)}
};
P* p = new P;static and dynamic
C* c = new C;P* static and dynamic
P* pc = new C;C* stat\c{ic}
f(p);P* , dyna\c{mic}C* f(P*)
f(c);f(C*)
f(pc);f(P*)
p->f();P::f
c->f();C::f
pc->f();C::f