Advertisement
Mihai_Preda

Untitled

Apr 22nd, 2021
264
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.51 KB | None | 0 0
  1. #include <iostream>
  2. #include <random>
  3. #include <ctime>
  4.  
  5. using namespace std;
  6.  
  7. class Animal
  8. {
  9. private:
  10.     int varsta, picioare;
  11. public:
  12.     Animal() {}
  13.     Animal(int varsta, int picioare)
  14.     {
  15.         this->varsta = varsta;
  16.         this->picioare = picioare;
  17.     }
  18.     virtual ~Animal()
  19.     {
  20.  
  21.     }
  22.     virtual void vorbeste()
  23.     {
  24.         cout << "Animalul vorbeste\n";
  25.     }
  26. };
  27.  
  28. class Caine: public Animal
  29. {
  30. private:
  31.     int culoare;
  32. public:
  33.     Caine(int varsta, int picioare, int culoare): Animal(varsta, picioare)
  34.     {
  35.         this->culoare = culoare;
  36.     }
  37.     void vorbeste()
  38.     {
  39.         cout << "Cainele latra\n";
  40.     }
  41.     void seJoaca()
  42.     {
  43.         cout << "Cainele se joaca\n";
  44.     }
  45. };
  46.  
  47. class Pisica: public Animal
  48. {
  49. public:
  50.     void vorbestte()
  51.     {
  52.         cout << "Pisica miauna\n";
  53.     }
  54. };
  55.  
  56. int main()
  57. {
  58.     srand(time(0));
  59.     Animal * v[100];
  60.     for(int i = 0; i < 100; i++)
  61.     {
  62.         if(rand() % 2 == 0)
  63.             v[i] = new Caine(5, 4, 0);
  64.         else
  65.             v[i] = new Pisica;
  66.     }
  67.  
  68.     // v[5] este Caine?
  69.     /*dynamic_cast<Caine*>(v[5]);*/ // -> Un pointer de tip caine la v[5], daca v[5] este un caine
  70.                                     // -> nullptr daca v[5] nu este caine
  71.     Caine * c;
  72.     Pisica * p;
  73.     if(c = dynamic_cast<Caine*>(v[5]))
  74.     {
  75.         cout << "Este caine\n";
  76.         c->seJoaca();
  77.     }
  78.     else if(p = dynamic_cast<Pisica*>(v[5]))
  79.     {
  80.         cout << "Este pisica\n";
  81.     }
  82.     return 0;
  83. }
  84.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement