#include<iostream>

using namespace std;

class Base {
public:
  virtual int foo(int ival =1024)
          { cout << "Base::foo() returns :" << ival << endl;
            return ival;
          }
};

class Derived : public Base {
public:
  virtual int foo(int ival =2048)
          { cout << "Derived::foo() returns :" << ival << endl;
            return ival;
          }
};

main()
{

 Base b;
 Base * pb = &b;

 b.foo();
 pb->foo();

 Derived d;
 pb = &d;
 
 d.foo();
 pb->foo();

}

