int main()
{
C, c;
D, d;
B* pb = &c; // ok, &c is a C * which is a B *
pb->f(); // calls C::f()
pb->g(); // calls B::g()
pb->h(); // calls B::h()
pb->j(); // calls B::j()
C *pc = &d; // ok, &d is a D * which is a C *
pc->f(); // calls C::f()
pc->B::f(); // calls B::f()
pc->g(); // calls C::g()
pc->h(); // calls D::h()
pc->C::h(); // calls B::h()
pc->j(); // calls D::j()
pc->C::j(); // calls C::j()
B &rb= *pc; // ok, *pc is a C which is a B
rb.f(); // calls C::f()
rb.B::f(); // calls B::f()
rb.g(); // calls B::g()
rb.h(); // calls D::h()
rb.j(); // calls B::j()
return 0;
}
// End of File