Example of Overriding Virtual Functions


/************************************************************************
*

The following example shows how virtual functions can be redefined.

                                                                        *
************************************************************************/

class B
{
public:
      virtual int f();
      virtual int g();
      int h();
};
class D : public B
{
public:
      int f();
      int g(char*);      // hides B::g()
      int h();
};
// ...
void main ()
{
      D d;
      B* bptr = &d;

      bptr->f();         // calls D::f() because f() is virtual
      bptr->h();         // calls B::h() because h() is nonvirtual
      bptr->g();         // calls B::g()
      d.g();             // error, wrong number and type of arguments
      d.g("string");     // calls D::g(char*)
}