实验五 类的继承、派生和多态(2)
一、验证性实验
1. 在多层继承中,派生类中出现与基类同名成员时,通过对象名.成员名的方式,访问的成员什么?
对象名.成员名:派生类对象
2. 通过基类指针访问派生类对象时,基类中成员函数有无关键字virtual,访问的成员分别是什么?
基类指针:有关键字时访问派生类,无关键字访问基类对象
二、编程练习
1、设计并实现一个机器宠物类MachinePets
#include<iostream> #include<string> using namespace std; class MachinePets{ public: MachinePets(const string cookie):nickname(cookie){} string getNickname() const{return nickname;} virtual string talk(){return "wang wang~";} private: string nickname; }; class PetCats:public MachinePets{ public: PetCats(const string s):MachinePets(s){} virtual string talk(){return "miao wu~";} }; class PetDogs:public MachinePets{ public: PetDogs(const string s):MachinePets(s){} virtual 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; }
运行结果如下: