1.设计并实现一个机器宠物类MachinePets。
每个机器宠物有如下信息:昵称(nickname) 每个机器宠物有如下成员函数: 带参数的构造函数MachinePets(const string s) ,为机器宠物初始化昵称。 纯虚函数string talk()为机器宠物派生类提供宠物叫声的统一接口。
设计并实现电子宠物猫类PetCats,该类公有继承自MachinePets。每个电子宠物猫类有如下成员函数: 带参数的构造函数PetCats(const string s),为机器宠物猫初始化昵称。 string talk(),返回电子宠物猫叫声。
设计并实现电子宠物狗类PetDogs, 该类公有继承自MachinePets。每个电子宠物狗类有如下成员函数:带参数的构造函数PetCats(const string s),为机器宠物狗初始化昵称。 string talk(),返回电子宠物狗叫声。
#include "MachinePets.h" #include "petcats.h" #include "petdogs.h" #include <iostream> using namespace std; void play(MachinePets *p){ cout<<p->getnickname()<<" "; p->talk(); } int main(){ petcats cat("miku"); petdogs dog("da huang"); play(&cat); play(&dog); return 0; }
#ifndef MACHINEPETS_H #define MACHINEPETS_H #include <string> using namespace std; class MachinePets{ public: MachinePets(const string s); string getnickname(); virtual string talk()=0; private: string nickname; }; #endif
#include "MachinePets.h" #include <iostream> #include <string> using namespace std; MachinePets::MachinePets(const string s):nickname(s){ } string MachinePets::getnickname(){ return nickname; }
#ifndef PETCATS_H #define PETCATS_H #include "MachinePets.h" #include <string> using namespace std; class petcats: public MachinePets { public: petcats(const string s); string talk(); }; #endif
#include "petcats.h" #include <string> #include <iostream> using namespace std; petcats::petcats(const string s):MachinePets(s){ } string petcats::talk(){ cout<<"says miao wu~"<<endl; }
#ifndef PETDOGS_H #define PETDOGS_H #include "MachinePets.h" #include <string> using namespace std; class petdogs: public MachinePets { public: petdogs(const string s); string talk(); }; #endif
#include "petdogs.h" #include <string> #include <iostream> using namespace std; petdogs::petdogs(const string s):MachinePets(s){ } string petdogs::talk(){ cout<<"says wang wang~"<<endl; }
小结
- 整个程序是模仿老师给出的part2完成的,知道了统一接口具体该怎样打代码。
- 在打petcats时回头参考了上一次实验的代码,复习了派生类的知识。
- 基础不够扎实,需多多实践,多多练习。
评论及地址
- https://www.cnblogs.com/nnn13579/p/10922062.html
- https://www.cnblogs.com/libing-072921/p/10970656.html
- https://www.cnblogs.com/0122Frank/p/10963507.html