实验五 类的继承、派生和多态(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;
}

运行结果如下:

posted @ 2019-06-03 14:28  小啵  阅读(148)  评论(0编辑  收藏  举报