#include <iostream>
#include <memory>
class Animal {
public:
virtual void speak() const {
std::cout << "Animal speaks" << std::endl;
}
virtual ~Animal() = default;
};
class Dog : public Animal {
public:
void speak() const override {
std::cout << "Dog barks" << std::endl;
}
};
class Cat : public Animal {
public:
void speak() const override {
std::cout << "Cat meows" << std::endl;
}
};
int main() {
std::unique_ptr<Animal> animals[2];
animals[0] = std::make_unique<Dog>();
animals[1] = std::make_unique<Cat>();
for (const auto& animal : animals) {
animal->speak(); // Calls the appropriate speak() method
}
// No need to manually delete as unique_ptr handles it
return 0;
}
To embed this project on your website, copy the following code and paste it into your website's HTML: