![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
#include <iostream> #include <string> using namespace std; class MachinePets{ public: MachinePets(const string s):nickname(s){}; string getNickname(); virtual string talk()=0; string nickname; }; string MachinePets::getNickname(){ return 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; }