#include class parent { public: int i1; virtual void f1() { i1 = i1 + 100; cout << "**** parent method increases i1" << endl; } }; class child : public parent { public: virtual void f1() { i1 = i1 - 100; cout << "child method DEcreases i1" << endl; } }; int main(int argc, char **argv) { parent *p; child *q; child y; y.i1 = 400; // ------------------------------------------------------------ y.f1(); // invoke f1() in child cout << "y.i1 = " << y.i1 << endl; // ------------------------------------------------------------ q = &y; q->f1(); // invoke f1() in child cout << "y.i1 = " << y.i1 << endl; // ------------------------------------------------------------ p = &y; p->f1(); // invoke f1() in parent !!! cout << "y.i1 = " << y.i1 << endl; }