#include using std::cout; using std::endl; class B { public: int i; virtual void print() { cout << "i value is " << i << " inside object of type B\n\n"; } }; class D: public B { public: void print() { cout << "i value is " << i << " inside object of type D\n\n"; } }; int main() { B b; B *pb; D d; b.i = 3; // initilise i values in objects d.i = 5; pb = &b; cout << "pb now points to b\n"; cout << "Calling pb->print()\n"; pb->print(); // uses B::print() pb = &d; cout << "pb now points to d\n"; cout << "Calling pb->print()\n"; pb->print(); // uses D::print() return 0; }