Listing 1 A class hierarchy that mixes virtual and non-virtual overriding

#include <iostream.h>

class B
   {
public:
   virtual void f();   // virtual
   void g();           // non-virtual
   virtual void h();   // virtual
   void j();           //non-virtual
   };
void B::f() { cout << "B::f()\n"; }

void B::g() { cout << "B::g()\n"; }

void B::h() { cout << "B::h()\n"; }

void B::j() { cout << "B::j()\n"; }

class C : public B
   {
public:
   void f();           // virtual
   void g();           // non-virtual
   virtual void j();   // virtual
   };

void C::f() { cout << "C::f()\n"; }

void C::g() { cout << "C::g()\n"; }

void C::j() { cout << "C::j()\n"; }

class D: public C
   {
public:
   void h();           // virtual
   void j();           // virtual
   };

void D::h() { cout << "D::h()\n"; }

void D::j() { cout << "D::j()\n"; }

// End of File