第五次实验

Posted linjiahao1035

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第五次实验相关的知识,希望对你有一定的参考价值。

1.(1)在多层继承中,派生类中出现与基类同名成员时,通过对象名.成员名的方式,访问的成员什么?

访问的成员是该对象名所在类的成员。

(2)通过基类指针访问派生类对象时,基类中成员函数有无关键字virtual,访问的成员分别是什么?

有virtual时访问的是派生类的成员,无virtual时访问的是基类的成员。

3.设计并实现一个机器宠物类MachinePets。

技术图片
#include<iostream>
#include"machinepets.h"
#include"petcats.h"
#include"petdogs.h"
using namespace std;
void play(MachinePets &v)
{
    cout << v.getnickname() << " says " << v.talk() << endl;
}
int main()
{
    PetCats cat("miku");
    play(cat);
    PetDogs dog("da huang");
    play(dog);
    system("pause");
    return 0;
}
main.cpp
技术图片
#ifndef MACHINEPETS_H
#define MACHINEPETS_H
#include<iostream>
#include<string>
using namespace std;
class MachinePets {
public:
    MachinePets(const string s = " ") :nickname(s) {}
    virtual string talk() = 0;
    string getnickname() {
        return nickname;
    }
private:
    string nickname;
};
#endif
machinepets.h
技术图片
#ifndef PETCATS_H
#define PETCATS_H
class PetCats : public MachinePets {
public:
    PetCats(const string s) :MachinePets(s) {}
    string talk() {
        return "miao wu~";
    }
};
#endif
petcats.h
技术图片
#ifndef PETDOGS_H
#define PETDOGS_H
class PetDogs : public MachinePets {
public:
    PetDogs(const string s) :MachinePets(s) {}
    string talk() {
        return "wang wang~";
    }
};
#endif
petdogs.h

技术图片

实验总结与体会:

1.本实验让我更深刻地了解了虚函数、纯虚函数、抽象类的定义和使用

2.我知道了通过基类指针访问派生类对象时,基类中成员函数有无关键字virtual的区别,有virtual时访问的是派生类的成员,无virtual时访问的是基类的成员。

3.我知道了在派生类中出现与基类同名成员时,通过派生类访问该同名成员时,访问的只是派生类中的成员,基类中的被自动忽略。

以上是关于第五次实验的主要内容,如果未能解决你的问题,请参考以下文章

第五次实验

20165210 Java第五次实验报告

《Java程序设计》第五次实验实验报告

第五次作业

第五次实验(数组实验)

JLU数据结构荣誉课第五次上机实验