实验5 类的继承、派生和多态(2)

设计并实现一个机器宠物类MachinePets。

#include"petcats.h"
#include"petdogs.h"
#include"machinepets.h"
#include<iostream>
#include<string>
using namespace std;

void play(MachinePets *p){
    cout<<p -> getNickname()<<"  says  "<<p -> talk()<<endl;
}


int main(){
    PetCats cat("miku");
    PetDogs dog("da huang");

    play(&cat);
    play(&dog);
    system("pause");
    return 0;
}
main
#include<string>
using namespace std;
#ifndef PETS_H
#define PETS_H
class MachinePets{
public:
    MachinePets(const string s):Nickname(s){}
    const string getNickname();
    virtual string talk()=0;
private:
    string Nickname;
};
#endif
machinepets.h
#include"machinepets.h"
#include<iostream>
#include<string>
using namespace std;

const string MachinePets::getNickname(){
    return Nickname;
}
machinepets.cpp
#include<string>usingnamespacestd;#ifndefPETCATS_H#definePETCATS_H#include"machinepets.h"classPetCats:publicMachinePets{public:PetCats(conststrings):MachinePets(s){}stringtalk();private:stringcatvoice;};#endif
petcats.h
#include<iostream>
#include<string>
#include"petcats.h"
#include"machinepets.h"
using namespace std;

string PetCats::talk(){
    catvoice="miao wu~";
    return catvoice;
}
petcats.cpp
#include<string>
using namespace std;
#ifndef PETDOGS_H
#define PETDOGS_H
#include"machinepets.h"

class PetDogs : public MachinePets{
public:
    PetDogs(const string s):MachinePets(s){}
    string talk();
private:
    string dogvoice;
};
#endif
petdogs.h
#include<iostream>
#include<string>
#include"petdogs.h"
#include"machinepets.h"
using namespace std;

string PetDogs::talk(){
    dogvoice="wang wang~";
    return dogvoice;
}
petdogs.cpp

这个实验相较于之前比较简单,还是要熟悉构造函数,以及熟练掌握类的继承派生,注意头文件和源文件要相对应,不然会出错。

posted @ 2019-06-03 12:27  星星会打烊  阅读(119)  评论(0编辑  收藏  举报