C++期末复习

一.客货两用车(对应复习点:水上飞机)

请设计以下汽车、客车、货车、客货两用车等4个类。

  • CAR 为汽车类,是公共基类,提供汽车的基本功能。包括:

    一个保护数据成员:speed(速度)。

    三个公有成员函数:构造函数(初始化速度)、析构函数和 Show 函数(显示速度)。

  • BUS 为客车类,以公有方式继承 CAR 类,在汽车类的基础上增加客运功能。包括:

    一个保护数据成员:seat(载客量)。

    三个公有成员函数:构造函数(初始化速度和载客量)、析构函数和 Show 函数(显示速度和载客量)。

  • TRUCK 为货车类,以公有方式继承 CAR 类,在汽车类的基础上增加货运功能。包括:

    一个保护数据成员:load(载货量)。

    三个公有成员函数:构造函数(初始化速度和载货量)、析构函数和 Show 函数(显示速度和载货量)。

  • VAN 为客货两用车类,同时以公有方式继承 BUS 类和 TRUCK 类,兼具客运和货运功能。包括:

    三个公有成员函数:构造函数(初始化速度、载客量、载货量)、析构函数和 Show 函数(显示速度、载客量和载货量)。

测试用例
  • 样例一
 

CAR *p; p = new CAR(25.3); p->Show(); delete p;

创建汽车(25.3公里/小时)
汽车: 25.3公里/小时
销毁汽车(25.3公里/小时)
  • 样例二
 

CAR *p; p = new BUS(58.5, 45); p->Show(); delete p;

创建汽车(58.5公里/小时)
创建客车(45人)
客车: 58.5公里/小时, 45人
销毁客车(45人)
销毁汽车(58.5公里/小时)
  • 样例三
 

CAR *p; p = new TRUCK(208.5, 350.8); p->Show(); delete p;

创建汽车(208.5公里/小时)
创建货车(350.8吨)
货车: 208.5公里/小时, 350.8吨
销毁货车(350.8吨)
销毁汽车(208.5公里/小时)
  • 样例四
 

CAR *p; p = new VAN(125.6, 5, 2.5); p->Show(); delete p;

创建汽车(125.6公里/小时)
创建客车(5人)
创建货车(2.5吨)
创建客货两用车
客货两用车: 125.6公里/小时, 5人, 2.5吨
销毁客货两用车
销毁货车(2.5吨)
销毁客车(5人)
销毁汽车(125.6公里/小时)
裁判程序
 

#include <iostream> using namespace std; /* 你提交的代码将被嵌在这里 */ int main() { CAR *p; double s, t, w; cin >> s, t, w; p = new VAN(s, t, w); p->Show(); delete p; return 0; }

输入样例
80.5 6 1.2

输出样例
创建汽车(80.5公里/小时)
创建客车(6人)
创建货车(1.2吨)
创建客货两用车
客货两用车: 80.5公里/小时, 6人, 1.2吨
销毁客货两用车
销毁货车(1.2吨)
销毁客车(6人)
销毁汽车(80.5公里/小时)

代码

class CAR
{
protected:
    double speed;
public:
    CAR(double s) :speed(s)
    {   
        cout << "创建汽车(" << speed << "公里/小时)" << endl;
    }
    virtual void Show()
    {
        cout << "汽车: " << speed << "公里/小时" << endl;
    }
    virtual ~CAR()
    {
        cout << "销毁汽车(" << speed << "公里/小时)" << endl;
    }
};

class BUS :public virtual CAR
{
protected:
    double seat;
public:
    BUS(double s, double se) :CAR(s), seat(se)
    {
        cout << "创建客车(" << seat << "人)" << endl;
    }
     ~BUS()override
    {
        cout << "销毁客车(" << seat << "人)" << endl;
    }
    void Show()override
    {
        cout << "客车: " << speed << "公里/小时, " << seat << "人" << endl;
    }
};

class TRUCK :public virtual CAR
{
protected:
    double load;
public:
    TRUCK(double s, double l) :CAR(s), load(l)
    {
        cout << "创建货车(" << load << "吨)" << endl;
    }
    void Show()override
    {
        cout << "货车: " << speed << "公里/小时, " << load << "吨" << endl;
    }
    ~TRUCK()override
    {
        cout << "销毁货车(" << load << "吨)" << endl;
    }
};

class VAN : public virtual BUS, public virtual TRUCK
{
public:
    VAN(double s, double se, double l) :CAR(s), BUS(s, se), TRUCK(s, l)
    {
        cout << "创建客货两用车" << endl;
    }
    ~VAN()override
    {
        cout << "销毁客货两用车" << endl;
    }
    void Show()override
    {
        cout << "客货两用车: " << speed << "公里/小时, " << seat << "人, " << load << "吨" << endl;
    }
};

二.运动成绩排名(对应**一道包含对象数组和排序的问题)

三.计算全班学生C++课程的总成绩和平均成绩

四 .Shape抽象类--通过定义一个基类的指针来访问基类的两个函数

void print(Shape* shape)  
{  
    cout << "Area:" << shape->getArea() << endl << "Perimeter:" << shape->getPerim() << endl;  
}

五.二维向量相加(C++ 运算符重载):运算符重载通常是通过成员函数或全局(非成员)函数来实现的。如果您选择成员函数,那么它只能有一个显式参数

错误示范:

TDVector operator+(TDVector& b, TDVector& a)
    {
        TDVector c;
        c.x = a.x + b.x;
        c.y = a.y + b.y;
        return c;
    }

正确

TDVector operator+(TDVector&a)
{
    TDVector c;
    c.x=this->x+a.x;
    c.y=this->y+a.y;
}

  

友元提高程序的运行效率,类的默认访问属性是私有

六虚函数的应用,学生成绩的输入和输出

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值