#include <iostream>
#include <typeinfo>
class Animal {
public:
virtual ~Animal() {}
};
class Dog : public Animal {};
class Cat : public Animal {};
void identifyAnimal(Animal* animal) {
if (typeid(*animal) == typeid(Dog)) {
std::cout << "This animal is a Dog" << std::endl;
} else if (typeid(*animal) == typeid(Cat)) {
std::cout << "This animal is a Cat" << std::endl;
} else {
std::cout << "Unknown animal type" << std::endl;
}
}
int main() {
Animal* dog = new Dog();
Animal* cat = new Cat();
Animal* generic_animal = new Animal();
identifyAnimal(dog);
identifyAnimal(cat);
identifyAnimal(generic_animal);
delete dog;
delete cat;
delete generic_animal;
return 0;
}