

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