class animal{ public: virtual void cry() = 0; }; class dog :public animal{ public: void cry(){ cout << "this dog is cring !!!" << endl; } void doThings(){ cout << "the dog eat stone!!!" << endl; } }; class cat : public animal{ public: void cry(){ cout << "this cat is cring!!!" << endl; } void doThings(){ cout << "this cat eat fish" << endl; } }; void display(animal *obj){ obj->cry(); dog *d1 = dynamic_cast<dog *>(obj); if (d1!=NULL) { d1->doThings(); } cat *c1 = dynamic_cast<cat *>(obj); if (c1!=NULL) { c1->doThings(); } } int main(void){ dog d1; cat c1; display(&d1); display(&c1); animal *base1; base1 = static_cast<dog*>(&d1); base1->cry(); int a; cin >> a; }