//virtual.cpp

#include<iostream.h>

class B
{public:
  virtual void f();
};

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

class D : public B
{public:
  void f();
};

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

void main () {
  B* pb = new D;  //OK perche' derivazione pubblica!
  pb -> f();      //Invoca D::f(), essendo B::f() virtuale.
}

/*output:
  D::f()
*/
