#include #include #include using namespace std; struct animal { string name; animal(string n){ name = n; cout << "A new animal! Name is " << name << endl; printf("This will print out too!\n"); } ~animal(){ printf("Disposing of animal %s\n", name.c_str()); } virtual void talk() { printf("Animal talk was called\n"); }; }; vector animals; struct fox : animal { fox(string n) : animal(n) {} void talk() override { cout << "yip" << endl; } }; struct cat : animal { cat(string n): animal(n) {} void talk(){ cout << "meow" << endl; } }; void add_animals(){ animals.push_back(new cat("Cat")); animals.push_back(new fox("Fred")); animals.push_back(new fox("Freddie")); animals.push_back(new cat("Chris")); animals.push_back(new fox("Frederick")); animals.push_back(new cat("Callie")); } int main(){ add_animals(); for(auto a : animals){ cout << a->name << " says "; a->talk(); } return 0; }