课后练习7、多态(函数)

课后练习7、多态(函数),第1张

6-1 抽象类Shape

请编写一个抽象类Shape,包括两个纯虚函数,分别为计算面积getArea()和计算周长getPerim()。通过Shape类派生出矩形类Rectangle和圆类Circle,并计算各自的面积和周长。

测试用例具体要求:输入1表示测试矩形类,之后输入矩形长和宽。输入2表示测试圆类,之后输入圆半径。

Shape类定义如下:
class Shape { public: virtual double getArea()=0; virtual double getPerim()=0; }; 
裁判测试程序样例:
#include 
using namespace std;
const double PI=3.14;

class Shape {
    public:
        virtual double getArea()=0;
        virtual double getPerim()=0;
};

/* ------请在这里填写答案 ------*/

int main() {
    Shape *p;
    int n;
    double w,h,r;
    scanf("%d",&n);
    switch(n) {
        case 1: {
            cin>>w>>h;
            Rectangle rect(w,h);
            cout<<"area="<print();
    a = b;
    a.print();
    ptr = &b;
    ptr->print();
    return 0;
}
输入样例:
None
输出样例:
A:3
A:15
B:5
3
15
5
class CMyClassB:public CMyClassA
{
    int val;
public:
    CMyClassB(int arg):CMyClassA(3*arg)
    {
        val = arg;
        printf("B:%d\n",val);
    }
    void print()
    {
        printf("%d\n", val);
    }
};

 

6-5 水上飞机*

请设计以下航行器、飞机、船、水上飞机等4个类。

  • CRAFT类为航行器类,是公共基类,提供航行器的基本特性。包括:

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

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

  • PLANE类为飞机类,以公有方式继承CRAFT类,在航行器类的基础上增加飞机的特性。包括:

    一个保护数据成员:width(翼展)。

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

  • SHIP类为船类,以公有方式继承CRAFT类,在航行器类的基础上增加船的特性。包括:

    一个保护数据成员:depth(吃水深度)。

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

  • SEAPLANE类为水上飞机类,同时以公有方式继承PLANE类和SHIP类,兼具飞机和船的特性。包括:

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

测试用例

  • 样例一
CRAFT *p; p = new CRAFT(87.2); p->Show(); delete p; 
创建航行器(速度: 87.2) 
航行(速度: 87.2) 
销毁航行器(速度: 87.2) 
  • 样例二
CRAFT *p; p = new PLANE(613.5, 45.3); p->Show(); delete p; 
创建航行器(速度: 613.5) 
创建飞机(翼展: 45.3) 
航行(速度: 613.5, 翼展: 45.3) 
销毁飞机(翼展: 45.3) 
销毁航行器(速度: 613.5) 
  • 样例三
CRAFT *p; p = new SHIP(45.8, 8.3); p->Show(); delete p; 
创建航行器(速度: 45.8) 
创建船(吃水: 8.3) 
航行(速度: 45.8, 吃水: 8.3) 
销毁船(吃水: 8.3) 
销毁航行器(速度: 45.8) 
  • 样例四
CRAFT *p; p = new SEAPLANE(415.2, 36.5, 2.1); p->Show(); delete p; 
创建航行器(速度: 415.2) 
创建飞机(翼展: 36) 
创建船(吃水: 2.1) 
创建水上飞机 
航行(速度: 415.2, 翼展: 36, 吃水: 2.1) 
销毁水上飞机 
销毁船(吃水: 2.1) 
销毁飞机(翼展: 36) 
销毁航行器(速度: 415.2) 
测试程序
#include 
using namespace std;

/* 你提交的代码将被嵌在这里 */

int main()
{
    double s, w, d;
    CRAFT *p;
    cin >> s >> w >> d;
    p = new SEAPLANE(s, w, d);
    p->Show();
    delete p;
    return 0;
}

输入样例

415.2 36.5 2.1

输出样例

创建航行器(速度: 415.2)
创建飞机(翼展: 36.5)
创建船(吃水: 2.1)
创建水上飞机
航行(速度: 415.2, 翼展: 36.5, 吃水: 2.1)
销毁水上飞机
销毁船(吃水: 2.1)
销毁飞机(翼展: 36.5)
销毁航行器(速度: 415.2)
class CRAFT
{
protected:
    double speed;
public:
    CRAFT(double a):speed(a)
    {
        cout<<"创建航行器(速度: "<

 

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1324436.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-12
下一篇2022-06-12

发表评论

登录后才能评论

评论列表(0条)