实验五
实验五第一个实验是一个关于抽象类,多态,运行时多态,虚函数等的一个实验。设计并实现一个机器宠物类MachinePets。
1 #include<iostream> 2 #include<string> 3 using namespace std; 4 5 class MachinePets{ 6 public: 7 MachinePets(const string s):nickname(s){ 8 } 9 virtual string talk()const=0; 10 string Getnickname(){ 11 return nickname; 12 } 13 private: 14 string nickname; 15 }; 16 17 class PetCats:public MachinePets{ 18 public: 19 PetCats(const string s):MachinePets(s){ 20 } 21 string talk()const{ 22 return "says miao wu~"; 23 } 24 }; 25 26 class PetDogs:public MachinePets{ 27 public: 28 PetDogs(const string s):MachinePets(s){ 29 } 30 string talk() const{ 31 return "says wuwang wuwang~"; 32 } 33 }; 34 35 void play(MachinePets &m){ 36 std::cout<<m.Getnickname()<<ends<<m.talk()<<endl; 37 } 38 39 int main() { 40 PetCats cat("miku"); 41 PetDogs dog("da huang"); 42 play(cat); 43 play(dog); 44 return 0; 45 }
实验截图:
实验二
填了几个空,最后6和7感觉是确定death啥的,想不出来。
1,#ifndef _CONTAINER
2,numOfHeal--;
3,p.bag.set(0,0);
4,void showinfo(player &p1, player &p2)
5,public player
等想出来运行出来再来补……
实验结论
关于第一个实验,void string talk()const声明中返回值类型是string,但是下面return类型是char类型,做了一个强制转换,换回char类型会报错,错误为,自己也一直不怎么了解char和string类型,上网查了https://bbs.csdn.net/topics/190078872和https://blog.csdn.net/yejinxiong001/article/details/78436310这两个网站,并根据错误对一个程序做了更改
1 #include<iostream> 2 #include<string> 3 using namespace std; 4 5 class MachinePets{ 6 public: 7 MachinePets(const string s):nickname(s){ 8 } 9 virtual char* talk()const=0; 10 string Getnickname(){ 11 return nickname; 12 } 13 private: 14 string nickname; 15 }; 16 17 class PetCats:public MachinePets{ 18 public: 19 PetCats(const string s):MachinePets(s){ 20 } 21 char* talk()const{ 22 return "says miao wu~"; 23 } 24 }; 25 26 class PetDogs:public MachinePets{ 27 public: 28 PetDogs(const string s):MachinePets(s){ 29 } 30 char* talk()const{ 31 return "says wang wang~"; 32 } 33 }; 34 35 void play(MachinePets &m){ 36 std::cout<<m.Getnickname()<<ends<<m.talk()<<endl; 37 } 38 39 int main() { 40 PetCats cat("miku"); 41 PetDogs dog("da huang"); 42 play(cat); 43 play(dog); 44 return 0; 45 }
但是还有warning,至少比之前直接写char talk能运行出结果了!
原文:https://www.cnblogs.com/DADABu-21/p/10940992.html