C++作业6.0

目录

题目

思路

代码


题目

创建一个场地类 Court,包含一个成员函数 bounce,在成员函数中输出“反弹”


创建两个网球场地类继承场地类,分别为硬地场地和红士场地,两个类都覆盖基类的 bounce函数,分别输出“砰砰砰”和“咚咚咚”


创建一个网球类 Tennis,要求:
①有一个如下格式的构造函数:
    Tennis(Court*c)
    在 Tennis 的构造函数中测试场地对象的 bounce 功能。


②屏蔽 Tennis 类的复制语义(拷贝构造、赋值运算符)
③屏蔽隐式调用构造函数
④在 Tennis 的析构函数中 delete 场地对象,
在主函数中分别创建硬地场地对象、红土场地对象与网球对象测试功能。

思路

一、整体功能概述

 

实现了一个简单的网球场地模拟系统。通过定义基类Court以及两个派生类YingCourt(硬地网球场)和RedCourt(红土网球场),并在Tennis类中使用指向Court类的指针来模拟不同类型的网球场。

 

二、类的定义与分析

 
  1. Court类:

    • 成员函数
      • bounce():虚函数,输出 “反弹”,作为网球场的通用行为。
    • 这个类作为基类,为不同类型的网球场提供了一个基本的框架。
  2. YingCourt类和RedCourt类:

    • 这两个类都是Court的派生类,分别代表硬地网球场和红土网球场。
    • 成员函数
      • bounce():重写了基类的bounce函数,分别输出 “砰砰砰” 和 “咚咚咚”,以体现不同类型网球场的独特反弹效果。
  3. Tennis类:

    • 成员变量
      • Court* court:指向Court类的指针,用于存储不同类型网球场的对象。
    • 构造函数
      • explicit Tennis(Court* c):接受一个指向Court类的指针作为参数,在构造函数中调用该指针所指向的网球场对象的bounce函数,并将指针存储在成员变量中。同时,该构造函数被声明为explicit,以防止隐式类型转换。
    • 析构函数
      • ~Tennis():在析构函数中释放由构造函数分配的Court对象的内存。
 

三、主函数分析

 
  1. main函数中,分别创建一个硬地网球场对象yc和一个红土网球场对象rc
  2. 然后,使用这两个对象分别创建了两个Tennis对象ytrt,在创建Tennis对象的过程中,会调用相应网球场对象的bounce函数,输出对应的反弹效果。

代码

#include <iostream>

using namespace std;

class Court
{
public:
    virtual void bounce()
    {
        cout<<"反弹"<<endl;
    }
};

class YingCourt:public Court
{
public:
    void bounce() override
    {
        cout<<"砰砰砰"<<endl;
    }
};

class RedCourt:public Court
{
public:
    void bounce() override
    {
        cout<<"咚咚咚"<<endl;
    }
};

class Tennis
{
private:
    Court* court;
    Tennis(const Tennis& T){}
    Tennis& operator =(const Tennis& t) {}

public:
    explicit Tennis(Court* c) : court(c)
    {
        c->bounce();
    }

    ~Tennis()
    {
        delete court;
    }
};

int main()
{
    YingCourt yc;
    Tennis yt(&yc);

    RedCourt rc;
    Tennis rt(&rc);
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值