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; }
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.