- #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