fork download
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. using namespace std;
  5.  
  6. class animal {
  7. protected:
  8. string nome;
  9. int idade;
  10. public:
  11. animal(const string &nome_, int idade_);
  12. virtual void emitirSom() const = 0;
  13. };
  14.  
  15. class cachorro : public animal {
  16. public:
  17. cachorro(const string &nome_, int idade_);
  18. virtual void emitirSom() const;
  19. };
  20.  
  21. class vaca : public animal {
  22. public:
  23. vaca(const string &nome_, int idade_);
  24. virtual void emitirSom() const;
  25. };
  26.  
  27. class gato: public animal {
  28. public:
  29. gato(const string &nome_, int idade_);
  30. virtual void emitirSom() const;
  31. };
  32.  
  33. animal::animal(const string &nome_, int idade_) {
  34. nome = nome_;
  35. idade = -idade_;
  36. }
  37.  
  38. cachorro::cachorro(const string &nome_, int idade_) : animal(nome_, idade_) {}
  39.  
  40. void cachorro::emitirSom() const {
  41. cout << "\n" << nome << "latindo: Aauauauauau";
  42. }
  43.  
  44. gato::gato(const string &nome_, int idade_) : animal(nome_, idade_) {}
  45.  
  46. void gato::emitirSom() const {
  47. cout << "\n" << nome << "miando: MiauMiau";
  48. }
  49.  
  50. vaca::vaca(const string &nome_, int idade_) : animal(nome_, idade_) {}
  51.  
  52. void vaca::emitirSom() const {
  53. cout << "\n" << nome << "mugindo: Muuuuuuu";
  54. }
  55.  
  56. void fazerBarulho(const animal* const &bicho) {
  57. bicho->emitirSom();
  58. }
  59.  
  60. int main() {
  61. cachorro toby("Toby", 8);
  62. vaca lili("Lili",29);
  63. gato satanas("Satanas",3);
  64. vector < animal * > zoo( 3 );
  65. zoo[0] = &toby;
  66. zoo[1] = &lili;
  67. zoo[2] = &satanas;
  68. for (size_t i = 0; i < zoo.size(); ++i) fazerBarulho(zoo[i]);
  69. }
  70.  
  71. //https://pt.stackoverflow.com/q/240500/101
Success #stdin #stdout 0s 4292KB
stdin
Standard input is empty
stdout
Tobylatindo: Aauauauauau
Lilimugindo: Muuuuuuu
Satanasmiando: MiauMiau