实验五

实验五

实验五第一个实验是一个关于抽象类,多态,运行时多态,虚函数等的一个实验。设计并实现一个机器宠物类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 }
MachinePets

 

实验截图:


实验二

填了几个空,最后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 }
char和string方面的更改

但是还有warning,至少比之前直接写char talk能运行出结果了!

 

 

互评地址:

https://www.cnblogs.com/jyf13/

https://www.cnblogs.com/aitxy899/

https://www.cnblogs.com/mzy-1229

posted @ 2019-05-28 23:03  DADABud  阅读(120)  评论(2编辑  收藏  举报