码迷,mamicode.com
首页 > 其他好文 > 详细

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

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

标签:pac   onclick   应用   iostream   访问   继承   指针   宠物   技术   

一、验证性实验

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)

标签:pac   onclick   应用   iostream   访问   继承   指针   宠物   技术   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!