#include #include #include #include using namespace std; class Animal{ private: string name; public: Animal(string n="Unnamed"): name(n){} virtual int legs()=0; virtual string species(){return "unknown";} virtual string getName(){return name;} protected: virtual string setName(string n){name=n;} }; class Lion : public Animal { public: virtual int legs(){return 4;} virtual string species(){return "Lion";} Lion(string n):Animal(n){} }; class Bird : public Animal { public: virtual int legs(){return 2;} virtual string species(){return "Bird";} Bird(string n):Animal(n){} }; class Snake: public Animal{ public: virtual int legs(); virtual string species(); Snake(string n):Animal(n){} }; int Snake::legs(){return 0;} string Snake::species(){return "Snake";} int main() { vector zoo; zoo.push_back(new Lion("Leo")); zoo.push_back( new Snake("Hissing Sid")); zoo.push_back( new Bird("Tweety Pie") ); cout <<"----------------\n"; for(int i=0; i < 3; i++) { cout << zoo[i]->species() << " "; cout << zoo[i]->getName() << ": "; cout << zoo[i]->legs() << endl; } cout <<"----------------\n"; for(vector::iterator i=zoo.begin(); i != zoo.end(); i++) { cout << (*i)->species() << " "; cout << (*i)->getName() << ": "; cout << (*i)->legs() << endl; } cout <<"----------------\n"; return 0; }