首页 > 其他 > 详细

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

时间:2019-06-02 16:02:10      阅读:97      评论:0      收藏:0      [点我收藏+]

一、验证性实验

1. 在多层继承中,派生类中出现与基类同名成员时,通过对象名.成员名的方式,访问的成员什么? 

      对象名.成员名:派生类对象

2. 通过基类指针访问派生类对象时,基类中成员函数有无关键字virtual,访问的成员分别是什么? 

       基类指针:有关键字时访问派生类,无关键字访问基类对象

 

 

二、编程练习

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

 

技术分享图片
#include<iostream>
#include<string>
using namespace std;

class MachinePets{
    public:
        MachinePets(const string s):nickname(s){}
        string getNickname() const{return nickname;}
        virtual string talk(){return 0;}
    private:
        string nickname;            
};

class PetCats:public MachinePets{
    public:
        PetCats(const string s):MachinePets(s){}
        string talk(){return "miao wu~";}
};

class PetDogs:public MachinePets{
    public:
        PetDogs(const string s):MachinePets(s){}
        string talk(){return "wang wang~";}
};

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

int main(){
    PetCats cat("miku");
    PetDogs dog("da huang");
    
    play(&cat);
    play(&dog);
    
    return 0;
}
MachinePets

效果如下:

技术分享图片

 

2、 简单RPG游戏补足与丰富

 

1--- #ifndef _CONTATNER

2--- numOfHeal--;

3--- bag.set(p.bag.nOfHeal()+bag.nOfHeal(), p.bag.nOfMW()+bag.nOfMW());

       p.bag.set(0,0);

4--- void showinfo(player &p1,player &p2)

5--- public player

6--- enemy.isLevelUp();

7--- human->isLevelUp();

效果如下:

技术分享图片

 

 

三、实验小结

  • PetDogs(const string s):MachinePets(s){}   MachinePets中的一段代码,想了很久,虽然在上次实验中有相似的操作
  • 补充的代码有误?尚未体会到RPG中虚函数的应用。

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

原文:https://www.cnblogs.com/zuiyankh/p/10963016.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!