#include <iostream>
#include <string>
using namespace std;
class MachinePets{
public:
MachinePets(const string s):nickname(s){};
string getNickname() {return nickname;};
virtual string talk()=0;
private:
string nickname;
};
class PetCats:public MachinePets{
public:
PetCats(const string s):MachinePets(s){};
string talk() {return "miao wu~";}
};
class PetDogs:public MachinePets{
public:
PetDogs(const string s):MachinePets(s){}
string talk() {return "wang wang~";};
};
void play(MachinePets *p){
cout<<p->getNickname()<<"says"<<p->talk()<<endl;
}
int main()
{ PetCats cat("miku");
PetDogs dog("da huang");
play(&cat);
play(&dog);
return 0;
}