#include <iostream>
using namespace std;
class Person
{
protected:
int age, weight, height;
public:
Person(int, int, int);
~Person();
virtual void getAge()
{
cout << age << endl;
}
void getWeight()
{
cout << weight << endl;
}
void getHeight()
{
cout << height << endl;
}
};
Person::Person(int age, int weight, int height)
{
this -> age = age;
this -> weight = weight;
this -> height = height;
}
Person::~Person()
{
}
class Dog : public Person
{
public:
Dog(int, int, int);
void getAge()
{
cout << age << " -- Dog Age" << endl;
}
void getWeight()
{
cout << weight << " -- Dog Weight" << endl;
}
void getHeight()
{
cout << height << "Dog Height" << endl;
}
};
Dog::Dog(int age, int weight, int height) : Person::Person(age, weight, height)
{
}
class Cat : public Person
{
public:
Cat(int, int, int);
void getAge()
{
cout << age << "Cat Age" << endl;
}
void getWeight()
{
cout << weight << "Cat Height" << endl;
}
void getHeight()
{
cout << height << "Cat Weight" << endl;
}
};
Cat::Cat(int age, int weight, int height) : Person::Person(age, weight, height)
{
}
int main()
{
Person* person;
Dog cake(15, 55, 175);
Cat terry(15, 55, 532);
person = &cake;
person->getAge();
person = &terry;
person->getAge();
Dog Cake(15, 55, 175);
Cat Terry(5, 76445, 1756656);
Cake.getAge();
Terry.getAge();
Terry.getWeight();
Terry.getHeight();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgUGVyc29uCnsKICBwcm90ZWN0ZWQ6CiAgICBpbnQgYWdlLCB3ZWlnaHQsIGhlaWdodDsKICBwdWJsaWM6CiAgICBQZXJzb24oaW50LCBpbnQsIGludCk7CiAgICB+UGVyc29uKCk7CiAgICB2aXJ0dWFsIHZvaWQgZ2V0QWdlKCkKICAgIHsKICAgICAgICBjb3V0IDw8IGFnZSA8PCBlbmRsOwogICAgfQogICAgdm9pZCBnZXRXZWlnaHQoKQogICAgewogICAgICAgICBjb3V0IDw8IHdlaWdodCA8PCBlbmRsOwogICAgfQogICAgdm9pZCBnZXRIZWlnaHQoKQogICAgewogICAgICAgY291dCA8PCBoZWlnaHQgPDwgZW5kbDsKICAgIH0KfTsKClBlcnNvbjo6UGVyc29uKGludCBhZ2UsIGludCB3ZWlnaHQsIGludCBoZWlnaHQpCnsKICAgIHRoaXMgLT4gYWdlID0gYWdlOwogICAgdGhpcyAtPiB3ZWlnaHQgPSB3ZWlnaHQ7CiAgICB0aGlzIC0+IGhlaWdodCA9IGhlaWdodDsKfQoKUGVyc29uOjp+UGVyc29uKCkKewp9CgpjbGFzcyBEb2cgOiBwdWJsaWMgUGVyc29uCnsKICBwdWJsaWM6CiAgICBEb2coaW50LCBpbnQsIGludCk7CiAgICB2b2lkIGdldEFnZSgpCiAgICB7CiAgICAgICBjb3V0IDw8IGFnZSA8PCAiIC0tIERvZyBBZ2UiIDw8IGVuZGw7CiAgICB9CiAgICB2b2lkIGdldFdlaWdodCgpCiAgICB7CiAgICAgICAgY291dCA8PCB3ZWlnaHQgPDwgIiAtLSBEb2cgV2VpZ2h0IiA8PCBlbmRsOwogICAgfQogICAgdm9pZCBnZXRIZWlnaHQoKQogICAgewogICAgICAgIGNvdXQgPDwgaGVpZ2h0IDw8ICJEb2cgSGVpZ2h0IiA8PCBlbmRsOwogICAgfQp9OwoKRG9nOjpEb2coaW50IGFnZSwgaW50IHdlaWdodCwgaW50IGhlaWdodCkgOiBQZXJzb246OlBlcnNvbihhZ2UsIHdlaWdodCwgaGVpZ2h0KQp7Cn0KCmNsYXNzIENhdCA6IHB1YmxpYyBQZXJzb24KewogIHB1YmxpYzoKICAgIENhdChpbnQsIGludCwgaW50KTsKICAgIHZvaWQgZ2V0QWdlKCkKICAgIHsKICAgICAgIGNvdXQgPDwgYWdlIDw8ICJDYXQgQWdlIiA8PCBlbmRsOwogICAgfQogICAgdm9pZCBnZXRXZWlnaHQoKQogICAgewogICAgICAgIGNvdXQgPDwgd2VpZ2h0IDw8ICJDYXQgSGVpZ2h0IiA8PCBlbmRsOwogICAgfQogICAgdm9pZCBnZXRIZWlnaHQoKQogICAgewogICAgICAgIGNvdXQgPDwgaGVpZ2h0IDw8ICJDYXQgV2VpZ2h0IiA8PCBlbmRsOwogICAgfQp9OwoKQ2F0OjpDYXQoaW50IGFnZSwgaW50IHdlaWdodCwgaW50IGhlaWdodCkgOiBQZXJzb246OlBlcnNvbihhZ2UsIHdlaWdodCwgaGVpZ2h0KQp7Cn0KCmludCBtYWluKCkKewogICAgUGVyc29uKiBwZXJzb247CiAgICBEb2cgY2FrZSgxNSwgNTUsIDE3NSk7CiAgICBDYXQgdGVycnkoMTUsIDU1LCA1MzIpOwogICAgcGVyc29uID0gJmNha2U7CiAgICBwZXJzb24tPmdldEFnZSgpOwogICAgcGVyc29uID0gJnRlcnJ5OwogICAgcGVyc29uLT5nZXRBZ2UoKTsKICAgCiAgICBEb2cgQ2FrZSgxNSwgNTUsIDE3NSk7CiAgICBDYXQgVGVycnkoNSwgNzY0NDUsIDE3NTY2NTYpOwogICAgQ2FrZS5nZXRBZ2UoKTsKICAgIFRlcnJ5LmdldEFnZSgpOwogICAgVGVycnkuZ2V0V2VpZ2h0KCk7CiAgICBUZXJyeS5nZXRIZWlnaHQoKTsKCiAgICByZXR1cm4gMDsKfQoK