實驗五 類的繼承、派生和多態(2) -开发者知识库

實驗五 類的繼承、派生和多態(2) -开发者知识库,第1张

一、驗證性實驗

1. 在多層繼承中,派生類中出現與基類同名成員時,通過對象名.成員名的方式,訪問的成員什么? 

      對象名.成員名:派生類對象

2. 通過基類指針訪問派生類對象時,基類中成員函數有無關鍵字virtual,訪問的成員分別是什么? 

       基類指針:有關鍵字時訪問派生類,無關鍵字訪問基類對象

 

 

二、編程練習

1、設計並實現一個機器寵物類MachinePets

 

實驗五 類的繼承、派生和多態(2) -开发者知识库,第2张
#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;
}

最佳答案:

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复