#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;
}

  

posted on 2019-06-03 23:39  流nian逆转  阅读(87)  评论(0)    收藏  举报