#include #include #include #include using namespace std; class Animal { private: int varsta, picioare; static int lastId; public: int id; Animal() { id = lastId; lastId++; } Animal(int varsta, int picioare) { id = lastId; lastId++; this->varsta = varsta; this->picioare = picioare; } virtual ~Animal() { } virtual void vorbeste() { cout << "Animalul vorbeste\n"; cout << "Are varsta " << varsta << "\n"; } static void f() { cout << "S-a apelat functia f\n"; } bool operator<(const Animal &other) const { return varsta < other.varsta; } int getVarsta() { return varsta; } int getPicioare() { return picioare; } }; int Animal::lastId = 0; 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() { map m; Animal a(2, 5), b(2, 2); m[a] = 7; m[b] = 10; cout << m[a]; return 0; }