1 #include <iostream> 2 #include <string> 3 4 using namespace std; 5 6 class Pet 7 { 8 private: 9 string name; 10 int age; 11 string color; 12 public: 13 Pet(string name,int age,string color) 14 { 15 this->name=name; 16 this->age=age; 17 this->color=color; 18 } 19 string Getname(){return name;} 20 int Getage(){return age;} 21 string Getcolor(){return color;} 22 virtual void Speak(); 23 virtual void Getinfo(); 24 }; 25 26 void Pet::Speak() 27 { 28 cout<<"How does a pet speak?"<<endl; 29 return; 30 } 31 32 void Pet::Getinfo() 33 { 34 cout<<"名字:"<<name<<endl; 35 cout<<"年龄:"<<age<<endl; 36 cout<<"颜色:"<<color<<endl; 37 } 38 39 class Cat:public Pet 40 { 41 public: 42 Cat(string name, int age, string color):Pet(name,age,color){} 43 void Speak(); 44 void Getinfo(); 45 }; 46 47 void Cat::Speak() 48 { 49 cout<<"猫的叫声:miao!miao!"<<endl; 50 return; 51 } 52 53 void Cat::Getinfo() 54 { 55 cout<<"猫的名字:"<<Getname()<<endl; 56 cout<<"猫的年龄:"<<Getage()<<endl; 57 cout<<"猫的颜色:"<<Getcolor()<<endl; 58 return; 59 } 60 61 class Dog:public Pet 62 { 63 public: 64 Dog(string name, int age, string color):Pet(name,age,color){} 65 void Speak(); 66 void Getinfo(); 67 }; 68 69 void Dog::Speak() 70 { 71 cout<<"狗的叫声:wang!wang!"<<endl; 72 return; 73 } 74 75 void Dog::Getinfo() 76 { 77 cout<<"狗的名字:"<<Getname()<<endl; 78 cout<<"狗的年龄:"<<Getage()<<endl; 79 cout<<"狗的颜色:"<<Getcolor()<<endl; 80 return; 81 } 82 83 int main() 84 { 85 string name1,name2,color1,color2; 86 int age1,age2; 87 cin>>name1>>age1>>color1; 88 cin>>name2>>age2>>color2; 89 Pet *p1,*p2; 90 p1=new Cat(name1,age1,color1); 91 p2=new Dog(name2,age2,color2); 92 p1->Getinfo(); 93 p1->Speak(); 94 p2->Getinfo(); 95 p2->Speak(); 96 return 0; 97 }