C++ 面向对象编程_实验报告2

https://slightwind.cn/

继承与派生实验

因为要按照教材多次更改代码,就把每次的版本都贴上来了。

#include <iostream>
using namespace std;
class Vehicle //定义基类
{
protected:
    int MaxSpeed; //最大速度
    int Weight;   //重量
public:
    Vehicle(int m, int w) //初始化成员变量的值
    {
        MaxSpeed = m;
        Weight = w;
        cout << "Constructing Vehicle... \n";
    }

    ~Vehicle()
    {
        cout << "Destructing Vehicle... \n";
    }

    void Run()
    {
        cout << "The vehicle is running! \n";
    }

    void Stop()
    {
        cout << "Please stop running! \n";
    }

    void Show()
    {
        cout << "It \\'s maxspeed is:" << MaxSpeed << endl;
        cout << "It \\'s weight is:" << Weight << endl;
    }
};
class Bicycle : public Vehicle //定义派生类,公有继承
{
protected:
    int Height; //高度,单位:厘米
public:
    Bicycle(int m, int w, int h) : Vehicle(m, w) //调用基类构造函数
    {
        Height = h; //为本类中新增成员提供初始值
        cout << "Constructing Bicycle...\n";
    }
    ~Bicycle()
    {
        cout << "Destructing Bycycle...\n";
    }
    void Show() //改造基类的Show 函数
    {
        Vehicle::Show();                 //调用基类Show 输出MaxSpeed 和Weight 值
        cout << Height << endl; //输出本类高度
    }
};

int main()
{
    Bicycle b(1, 1, 1); //定义派生类对象
    b.Run();            //观察构造、析构函数调用顺序
    b.Stop();
    b.Show();
    return 0;
}

在Bicycle类下面增加Car类的定义

#include <iostream>
using namespace std;
class Vehicle //定义基类
{
protected:
    int MaxSpeed; //最大速度
    int Weight;   //重量
public:
    Vehicle(int m, int w) //初始化成员变量的值
    {
        MaxSpeed = m;
        Weight = w;
        cout << "Constructing Vehicle... \n";
    }

    ~Vehicle()
    {
        cout << "Destructing Vehicle... \n";
    }

    void Run()
    {
        cout << "The vehicle is running! \n";
    }

    void Stop()
    {
        cout << "Please stop running! \n";
    }

    void Show()
    {
        cout << "It \\'s maxspeed is:" << MaxSpeed << endl;
        cout << "It \\'s weight is:" << Weight << endl;
    }
};
class Bicycle : public Vehicle //定义派生类,公有继承
{
protected:
    int Height; //高度,单位:厘米
public:
    Bicycle(int m, int w, int h) : Vehicle(m, w) //调用基类构造函数
    {
        Height = h; //为本类中新增成员提供初始值
        cout << "Constructing Bicycle...\n";
    }
    ~Bicycle()
    {
        cout << "Destructing Bycycle...\n";
    }
    void Show() //改造基类的Show 函数
    {
        Vehicle::Show();        //调用基类Show 输出MaxSpeed 和Weight 值
        cout << Height << endl; //输出本类高度
    }
};
class Car : public Vehicle //定义派生类Car,公有继承
{
protected:
    int SeatNum;                             //座位数
public:
    Car(int m, int w, int s) : Vehicle(m, w) //调用基类构造函数
    {
        SeatNum = s; //为本类中新增成员提供初始值
        cout << "Constructing Car...\n";
    }
    ~Car()
    {
        cout << "Destructing Car...\n";
    }
    void Show() //改造基类的Show 函数
    {
        Vehicle::Show();         //调用基类Show 输出MaxSpeed 和Weight 值
        cout << SeatNum << endl; //输出本类座位数
    }
};
int main()
{
    Bicycle b(1, 1, 1); //定义自行车类对象
    b.Run();
    b.Stop();
    b.Show();
    Car c(2,2,2); //定义汽车类对象
    c.Run();
    c.Stop();
    c.Show();
    return 0;
}

增加的第3层类MotorCycle及修改以后的main( )函数

#include <iostream>
using namespace std;
class Vehicle //定义基类
{
protected:
    int MaxSpeed; //最大速度
    int Weight;   //重量
public:
    Vehicle(int m, int w) //初始化成员变量的值
    {
        MaxSpeed = m;
        Weight = w;
        cout << "Constructing Vehicle... \n";
    }

    ~Vehicle()
    {
        cout << "Destructing Vehicle... \n";
    }

    void Run()
    {
        cout << "The vehicle is running! \n";
    }

    void Stop()
    {
        cout << "Please stop running! \n";
    }

    void Show()
    {
        cout << "It \\'s maxspeed is:" << MaxSpeed << endl;
        cout << "It \\'s weight is:" << Weight << endl;
    }
};
class Bicycle : virtual public Vehicle //定义派生类,公有继承
{
protected:
    int Height; //高度,单位:厘米
public:
    Bicycle(int m, int w, int h) : Vehicle(m, w) //调用基类构造函数
    {
        Height = h; //为本类中新增成员提供初始值
        cout << "Constructing Bicycle...\n";
    }
    ~Bicycle()
    {
        cout << "Destructing Bycycle...\n";
    }
    void Show() //改造基类的Show 函数
    {
        Vehicle::Show();        //调用基类Show 输出MaxSpeed 和Weight 值
        cout << Height << endl; //输出本类高度
    }
};
class Car : virtual public Vehicle //定义派生类Car,公有继承
{
protected:
    int SeatNum; //座位数
public:
    Car(int m, int w, int s) : Vehicle(m, w) //调用基类构造函数
    {
        SeatNum = s; //为本类中新增成员提供初始值
        cout << "Constructing Car...\n";
    }
    ~Car()
    {
        cout << "Destructing Car...\n";
    }
    void Show() //改造基类的Show 函数
    {
        Vehicle::Show();         //调用基类Show 输出MaxSpeed 和Weight 值
        cout << SeatNum << endl; //输出本类座位数
    }
};
class MotorCycle : public Bicycle, public Car //第3 层类
{
public:
    MotorCycle(int m, int w, int h, int s) : Bicycle(m, w, h), Car(m, w, s), Vehicle(m, w)
    {
        cout << "Constructing MotorCycle...\n";
    }
    ~MotorCycle()
    {
        cout << "Destructing MotorCycle...\n";
    }
    void Show() //输出4 个成员变量的信息,需消除二义性
    {
        cout << "It\'s maxspeed is:" << MaxSpeed << endl; //错误
        cout << "It\'s weight is:" << Weight << endl;     //错误
        cout << "It\'s height is:" << Height << endl;
        cout << "It\'s seatnum is:" << SeatNum << endl;
    }
};
int main()
{
    MotorCycle mc(1, 2, 3, 4); //定义摩托车类对象
    mc.Run();                  //错误
    mc.Stop();                 //错误
    mc.Show();
    return 0;
}

http://am473ur.com/

实验内容: 1.和对象的定义和对象的定义和对象的定义和对象的定义,实现,实现,实现StudentStudentStudent成绩的基本员定义成绩的基本员定义成绩的基本员定义成绩的基本员定义成绩的基本员定义成绩的基本员定义;的基本函数功能的基本函数功能的基本函数功能的基本函数功能:学号的学号的提取,成绩的基本计算。提取,成绩的基本计算。提取,成绩的基本计算。提取,成绩的基本计算。提取,成绩的基本计算。 2.构造函数和析构造函数和析构造函数和析构造函数和析构造函数和析,实现对象自动初始化和释放,实现对象自动初始化和释放,实现对象自动初始化和释放,实现对象自动初始化和释放,实现对象自动初始化和释放,实现对象自动初始化和释放,实现对象自动初始化和释放; 3.静态成员静态成员,实现数据共享,实现数据共享,实现数据共享,实现数据共享,实现数据共享;静态成员函数功能静态成员函数功能静态成员函数功能静态成员函数功能静态成员函数功能:计算N个学生的某科成绩总分和平均个学生的某科成绩总分和平均个学生的某科成绩总分和平均个学生的某科成绩总分和平均个学生的某科成绩总分和平均个学生的某科成绩总分和平均个学生的某科成绩总分和平均分。 4.友元函数和友元函数和友元函数和友元函数和,实现非函数对私有据的访问功能,实现非函数对私有据的访问功能,实现非函数对私有据的访问功能,实现非函数对私有据的访问功能,实现非函数对私有据的访问功能,实现非函数对私有据的访问功能,实现非函数对私有据的访问功能,实现非函数对私有据的访问功能,实现非函数对私有据的访问功能;友元函数功能:计算任友元函数功能:计算任友元函数功能:计算任友元函数功能:计算任友元函数功能:计算任友元函数功能:计算任友元函数功能:计算任两个学生的某科成绩差。两个学生的某科成绩差。两个学生的某科成绩差。两个学生的某科成绩差。两个学生的某科成绩差。 5.友元,实现友元,实现友元,实现友元,实现友元,实现TeacherTeacherTeacher与StudentStudentStudent静态数据共享静态数据共享静态数据共享静态数据共享;友元函数功能:通过班号友元函数功能:通过班号友元函数功能:通过班号友元函数功能:通过班号友元函数功能:通过班号友元函数功能:通过班号提取某班科成绩总分和平均。提取某班科成绩总分和平均。提取某班科成绩总分和平均。提取某班科成绩总分和平均。提取某班科成绩总分和平均。提取某班科成绩总分和平均。提取某班科成绩总分和平均。 6.派生,实现访问基保护成员的功能派生,实现访问基保护成员的功能派生,实现访问基保护成员的功能派生,实现访问基保护成员的功能派生,实现访问基保护成员的功能派生,实现访问基保护成员的功能派生,实现访问基保护成员的功能派生,实现访问基保护成员的功能派生,实现访问基保护成员的功能派生,实现访问基保护成员的功能;派生函数功能:根据某个学总分派生函数功能:根据某个学总分派生函数功能:根据某个学总分派生函数功能:根据某个学总分派生函数功能:根据某个学总分派生函数功能:根据某个学总分派生函数功能:根据某个学总分派生函数功能:根据某个学总分派生函数功能:根据某个学总分计算等级。计算等级。 7.虚函数虚函数,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。,实现虚函数支持的动态联编;功能:为一等学生发放奖金。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风好衣轻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值