/// File basederived.cc, by KWR for CSE250, Spr'00.  From Java2C++ handout.
#include <iostream>

class Base {
public:
   virtual void dynamicBind() {cout << "Base dynamicBind()" << endl;}
   void staticBind() {cout << "Base staticBind()" << endl;}
};

class Derived: public Base {
public:
   virtual void dynamicBind() {cout << "Derived dynamicBind()" << endl;}
   void staticBind(){cout << "Derived staticBind()" << endl;}
   //^^^^ a dubious override!?
};

int main(){
   Base* bp;
   Derived* dp = new Derived();
   bp = dp; ///now bp points to a Derived object tho its own type is Base*.
   bp->staticBind();  ///which class' version gets called?
   bp->dynamicBind(); ///and here?
} 

