#include using namespace std; class A { public: virtual void f(); void g(); virtual void h(); void j(); private: int x; }; void A::f() { cout << "A::f()" << endl; } void A::g() { cout << "A::g()" << endl; } void A::h() { cout << "A::h()" << endl; } void A::j() { cout << "A::j()" << endl; } class B : public A { public: void f(); void g(); virtual void j(); private: float y; }; void B::f() { cout << "B::f()" << endl; } void B::g() { cout << "B::g()" << endl; } void B::j() { cout << "B::j()" << endl; } class C : public B { public: void h(); void j(); private: float y; }; void C::h() { cout << "C::h()" << endl; } void C::j() { cout << "C::j()" << endl; } void main() { A a; B b; C c; a.f(); a.g(); a.h(); a.j(); cout << endl; b.f(); b.g(); b.h(); b.j(); cout << endl; c.f(); c.g(); c.h(); c.j(); cout << endl; A* pa; B* pb; C* pc; pa = &a; pa->f(); pa->g(); pa->h(); pa->j(); cout << endl; pa = &b; pa->f(); pa->g(); pa->h(); pa->j(); cout << endl; pa = &c; pa->f(); pa->g(); pa->h(); pa->j(); cout << endl; pb = &b; pb->f(); pb->g(); pb->h(); pb->j(); cout << endl; pb = &c; pb->f(); pb->g(); pb->h(); pb->j(); cout << endl; pc = &c; pc->f(); pc->g(); pc->h(); pc->j(); cout << endl; } /* RESULTS A::f() A::g() A::h() A::j() B::f() B::g() A::h() B::j() B::f() B::g() C::h() C::j() A::f() A::g() A::h() A::j() B::f() A::g() A::h() A::j() B::f() A::g() C::h() A::j() B::f() B::g() A::h() B::j() B::f() B::g() C::h() C::j() B::f() B::g() C::h() C::j() */