--- /dev/null
+#include "Zombie.h"
+#include <iostream>
+#include <string>
+
+Zombie::Zombie(std::string name): m_name(name)
+{
+}
+
+Zombie &Zombie::operator=(const Zombie &zombie)
+{
+ m_name = zombie.m_name;
+ return (*this);
+}
+
+Zombie::Zombie(const Zombie &zombie)
+{
+ *this = zombie;
+}
+
+Zombie::~Zombie(void)
+{
+ std::cout << m_name << " is being deconstructed\n";
+}
+
+void Zombie::announce(void)
+{
+ std::cout << m_name << ": BraiiiiiiinnnzzzZ...\n";
+}
--- /dev/null
+#ifndef ZOMBIE_H
+# define ZOMBIE_H
+
+# include <string>
+
+class Zombie
+{
+ private:
+ std::string m_name;
+
+ public:
+ Zombie(std::string name = "zombie");
+ Zombie &operator=(const Zombie &zombie);
+ Zombie(const Zombie &zombie);
+ ~Zombie();
+
+ void announce(void);
+};
+
+#endif // ZOMBIE_H
--- /dev/null
+#include "Zombie.h"
+
+
+Zombie *zombieHorde(int n, std::string name);
+
+int main(void)
+{
+ Zombie *zombie_arr;
+ size_t n;
+
+ n = 10;
+ zombie_arr = zombieHorde(n, "Ed");
+ for (size_t i(0); i < n; ++i)
+ zombie_arr[i].announce();
+ delete[] zombie_arr;
+ return (0);
+}
--- /dev/null
+#include "Zombie.h"
+#include <string>
+
+Zombie *zombieHorde(int n, std::string name)
+{
+ Zombie temp(name);
+ Zombie *array;
+
+ array = new Zombie[n];
+ if (array == NULL)
+ return (NULL);
+ for (int i(0); i < n; ++i)
+ array[i] = temp;
+ return (array);
+}