#include <iostream>
using namespace std;
class IAnimal
{
protected:
int m_Age;
double m_Weight;
public:
int Get_Age() const {return m_Age;}
void Set_Age(int age) {m_Age = age;}
double Get_Weight() const {return m_Weight;}
void Set_Weight(double weight) {m_Weight = weight;}
virtual void Move() = 0;
//=============================
IAnimal() {m_Age = m_Weight = 0;}
IAnimal(int age, double weight) {m_Age = age; m_Weight = weight;}
virtual ~IAnimal(){};
};
class CBird : public IAnimal
{
public:
void Move() {cout << "JA LATAM !!!\n";}
using IAnimal::IAnimal;
};
class CDog : public IAnimal
{
public:
using IAnimal::IAnimal;
void Move() {cout << "JA BIEGAM !!!\n";}
};
int main()
{
IAnimal * p_animal = new CDog(5, 5.0);
p_animal->Move();
cout << p_animal->Get_Age() << endl;;
cout << p_animal->Get_Weight() << endl;
delete p_animal;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgogCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKICAgIGNsYXNzIElBbmltYWwKICAgIHsKICAgIHByb3RlY3RlZDoKICAgICAgICBpbnQgbV9BZ2U7CiAgICAgICAgZG91YmxlIG1fV2VpZ2h0OwogICAgcHVibGljOgogICAgICAgIGludCBHZXRfQWdlKCkgICAgICAgICAgIGNvbnN0ICAgICAgIHtyZXR1cm4gbV9BZ2U7fQogICAgICAgIHZvaWQgU2V0X0FnZShpbnQgYWdlKSAgICAgICAgICAgICAgIHttX0FnZSA9IGFnZTt9CiAgICAgICAgZG91YmxlIEdldF9XZWlnaHQoKSAgICAgIGNvbnN0ICAgICAgIHtyZXR1cm4gbV9XZWlnaHQ7fQogICAgICAgIHZvaWQgU2V0X1dlaWdodChkb3VibGUgd2VpZ2h0KSAgICAgICB7bV9XZWlnaHQgPSB3ZWlnaHQ7fQogICAgICAgIHZpcnR1YWwgdm9pZCBNb3ZlKCkgPSAwOwogCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogICAgICAgIElBbmltYWwoKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHttX0FnZSA9IG1fV2VpZ2h0ID0gMDt9CiAgICAgICAgSUFuaW1hbChpbnQgYWdlLCBkb3VibGUgd2VpZ2h0KSAgICAgIHttX0FnZSA9IGFnZTsgbV9XZWlnaHQgPSB3ZWlnaHQ7fQogICAgICAgIHZpcnR1YWwgfklBbmltYWwoKXt9OwogICAgfTsKIAogICAgY2xhc3MgQ0JpcmQgOiBwdWJsaWMgSUFuaW1hbAogICAgewogICAgcHVibGljOgogICAgICAgIHZvaWQgTW92ZSgpICAgICAgICAgICAgICAgICAgICAgICAgIHtjb3V0IDw8ICJKQSBMQVRBTSAhISFcbiI7fQogICAgICAgdXNpbmcgSUFuaW1hbDo6SUFuaW1hbDsKICAgIH07CiAKICAgIGNsYXNzIENEb2cgOiBwdWJsaWMgSUFuaW1hbAogICAgewogICAgcHVibGljOgogICAgICAgIHVzaW5nIElBbmltYWw6OklBbmltYWw7CiAgICAgICAgdm9pZCBNb3ZlKCkgICAgICAgICAgICAgICAgICAgICAgICAge2NvdXQgPDwgIkpBIEJJRUdBTSAhISFcbiI7fQogICAgfTsKIAogCmludCBtYWluKCkKewogICAgSUFuaW1hbCAqIHBfYW5pbWFsID0gbmV3IENEb2coNSwgNS4wKTsKICAgIHBfYW5pbWFsLT5Nb3ZlKCk7CiAgICBjb3V0IDw8IHBfYW5pbWFsLT5HZXRfQWdlKCkgPDwgZW5kbDs7CiAgICBjb3V0IDw8IHBfYW5pbWFsLT5HZXRfV2VpZ2h0KCkgPDwgZW5kbDsKICAgIGRlbGV0ZSBwX2FuaW1hbDsKfQ==