// virtual.cpp #include class Base { protected: int i; public: Base() { i = 0; } Base(int ii) { i = ii; } virtual ~Base() {} virtual void dothis() const {cout<<"Base function called"<dothis(); p1->dothis(); p2->dothis(); cout << endl; Derived2 *ptr; ptr = &d2; ptr->dothis(); cout << endl; // ptr = &d1; // error - ptr must be of same or base class Base *ptr1; ptr1 = &d1; ptr1->dothis(); ptr1 = &d2; ptr1->dothis(); cout << endl; return 0; }