#include <cstdlib>
#include <iostream>
class Mamifero {
public:
Mamifero() {}~Mamifero() {}
virtual void somMamifero() const {
std::cout << "\n\tSom de mamifero.\n";
}
virtual void menu() const {
Mamifero * mamPtr;
int op;
while (op != 5) {
std::cout << "\n\t(1) Boi" <<
"\n\t(2) Gato" <<
"\n\t(3) Porco" <<
"\n\t(4) Cachorro" <<
"\n\t(5) Sair" <<
"\n\tDigite: ";
std::cin >> op;
switch (op) {
case 1:
{
mamPtr = new Mamifero();
mamPtr - > somMamifero();
break;
}
case 2:
{
mamPtr = new Mamifero();
mamPtr - > somMamifero();
break;
}
case 3:
{
mamPtr = new Mamifero();
mamPtr - > somMamifero();
break;
}
case 4:
{
mamPtr = new Mamifero();
mamPtr - > somMamifero();
break;
}
case 5:
{
std::cout << "\n\tGood Bye\n\n";
exit(0);
break;
}
default:
std::cout << "\n\tOpção Inválida ..!!!\n";
}
}
}
};
class Boi: public Mamifero {
public: void somMamifero() const {
std::cout << "\n\tMuu ..! Muu..!!\n";
}
void menu() const {
Mamifero * mamPtr;
mamPtr = new Boi();
mamPtr - > somMamifero();
}
};
class Gato: public Mamifero {
public: void somMamifero() const {
std::cout << "\n\tMiAu ..! MiAu..!!\n";
}
void menu() const {
Mamifero * mamPtr;
mamPtr = new Gato();
mamPtr - > somMamifero();
}
};
class Porco: public Mamifero {
public: void somMamifero() const {
std::cout << "\n\tOinc ..! Oinc..!!\n";
}
void menu() const {
Mamifero * mamPtr;
mamPtr = new Porco();
mamPtr - > somMamifero();
}
};
class Cachorro: public Mamifero {
public: void somMamifero() const {
std::cout << "\n\tAu ..! Au..!!\n";
}
void menu() const {
Mamifero * mamPtr;
mamPtr = new Cachorro();
mamPtr - > somMamifero();
}
};
int main() {
Mamifero * m = new Mamifero();;
m - > menu();
}
//https://pt.stackoverflow.com/q/170799/101