class D{}; class A : public D{}; class B : public A {}; class C : public A {}; class Base { public: virtual void F1(A *p); virtual void F1(B *p); virtual void F1(C *p); virtual void F1(D *p); }; class Child : public Base { public: void F1(A *p); void F1(B *p) { printf("Child B!\n"); } void F1(C *p) { printf("Child C!\n"); } void F1(D *p); }; void main() { Child c; getch(); }