#include #include #include using namespace std; class Animal { private: int varsta, picioare; public: Animal() {} Animal(int varsta, int picioare) { this->varsta = varsta; this->picioare = picioare; } virtual ~Animal() { } virtual void vorbeste() { cout << "Animalul vorbeste\n"; } }; class Caine: public Animal { private: int culoare; public: Caine(int varsta, int picioare, int culoare): Animal(varsta, picioare) { this->culoare = culoare; } void vorbeste() { cout << "Cainele latra\n"; } void seJoaca() { cout << "Cainele se joaca\n"; } }; class Pisica: public Animal { public: void vorbestte() { cout << "Pisica miauna\n"; } }; int main() { srand(time(0)); Animal * v[100]; for(int i = 0; i < 100; i++) { if(rand() % 2 == 0) v[i] = new Caine(5, 4, 0); else v[i] = new Pisica; } // v[5] este Caine? /*dynamic_cast(v[5]);*/ // -> Un pointer de tip caine la v[5], daca v[5] este un caine // -> nullptr daca v[5] nu este caine Caine * c; Pisica * p; if(c = dynamic_cast(v[5])) { cout << "Este caine\n"; c->seJoaca(); } else if(p = dynamic_cast(v[5])) { cout << "Este pisica\n"; } return 0; }