Five experiments inheritance, and polymorphism derivative (2)

A verification experiment

1. In a multilayer inheritance, the base class members with the same name appeared in a derived class, what by. Way member name, member access object name? 

      Object Name Member Name: derived class object

2. a base pointer when accessing derived class object, the base class member function with or without the keyword virtual, what members are accessed? 

       Base class pointer: there are the keywords to access the derived class, no access to the base class object keyword

 

 

Second, the programming exercises

1, design and implement a class pet robot 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

Results are as follows:

 

2, simple RPG game to complement and enrich

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();

Results are as follows:

 

 

Third, test summary

  • PetDogs (const string s): MachinePets (s) {} MachinePets piece of code in, like a long time, although similar operation in the previous experiment
  • Add the code wrong? RPG applications have not yet realized that the virtual function.

Guess you like

Origin www.cnblogs.com/zuiyankh/p/10963016.html