#ifndef PETDOGS_H #define PETDOGS_H #include<string> using namespace std; #include"MachinePets.h" class PetDogs:public MachinePets{ public: PetDogs(const string s); string talk(); }; #endif
#ifndef PETCATS_H #define PETCATS_H #include<string> using namespace std; #include"MachinePets.h" class PetCats:public MachinePets{ public: PetCats(const string s); string talk(); }; #endif
#ifndef MACHINEPETS_H #define MACHINEPETS_H #include<string> using namespace std; class MachinePets{ private: string nickname; public: MachinePets(const string s); virtual string talk()=0; string getNickname()const; }; #endif
#include "MachinePets.h" #include<string> using namespace std; MachinePets::MachinePets(const string s):nickname(s){ } string MachinePets::getNickname()const{ return nickname; }
#include"PetCats.h" #include<string> using namespace std; PetCats::PetCats(const string s):MachinePets(s){ } string PetCats::talk(){ return "miao wu~~"; }
#include"PetDogs.h" #include<string> using namespace std; PetDogs::PetDogs(const string s):MachinePets(s){ } string PetDogs::talk(){ return "wang wang~~"; }
#include<iostream> #include<string> using namespace std; #include"MachinePets.h" #include"PetCats.h" #include"PetDogs.h" void play(MachinePets *p){ cout<<p->getNickname()<<" says "<<p->talk()<<endl; } int main() { PetCats cat("miku"); PetDogs dog("da huang"); play(&cat); // 按照play()形参,传递参数 play(&dog); // 按照play()形参,传递参数 system("pause"); return 0; }
结果截图:
原文:https://www.cnblogs.com/cjj1/p/10967941.html