C++抽象类与多态编程实例

60、编程:a. 创建一个名为AbstractClass的抽象类,该类声明一个名为f()的纯虚函数。接下来,创建三个从AbstractClass继承的派生类,分别命名为DerivedOne、DerivedTwo和DerivedThree。在每个派生类中实现f()函数,使其向屏幕打印一条简单的消息。在main()函数中,创建一个包含三个AbstractClass指针的数组,并动态分配每个派生类类型的一个对象,将其地址赋给数组元素。示例:abstract_array[0] = new DerivedOne; b. 通过数组元素中存储的指针调用f()函数。

以下是实现该需求的示例代码:

#include <iostream>

// 抽象类 AbstractClass
class AbstractClass {
public:
    virtual void f() = 0; // 纯虚函数
    virtual ~AbstractClass() {}
};

// 派生类 DerivedOne
class DerivedOne : public AbstractClass {
public:
    void f() override {
        std::cout << "DerivedOne: This is a simple message." << std::endl;
    }
};

// 派生类 DerivedTwo
class DerivedTwo : public AbstractClass {
public:
    void f() override {
        std::cout << "DerivedTwo: This is a simple message." << std::endl;
    }
};

// 派生类 DerivedThree
class DerivedThree : public AbstractClass {
public:
    void f() override {
        std::cout << "DerivedThree: This is a simple message." << std::endl;
    }
};

int main() {
    // 创建 AbstractClass 指针数组
    AbstractClass* abstract_array[3];

    // 动态分配每个派生类类型的一个对象,并将其地址赋给数组元素
    abstract_array[0] = new DerivedOne;
    abstract_array[1] = new DerivedTwo;
    abstract_array[2] = new DerivedThree;

    // 通过数组元素中存储的指针调用 f() 函数
    for (int i = 0; i < 3; ++i) {
        abstract_array[i]->f();
    }

    // 释放动态分配的内存
    for (int i = 0; i < 3; ++i) {
        delete abstract_array[i];
    }

    return 0;
}

上述代码首先定义了抽象类 AbstractClass ,其中包含一个纯虚函数 f() 。然后创建了三个派生类 DerivedOne DerivedTwo DerivedThree ,并在每个派生类中实现了 f() 函数。在 main() 函数中,创建了一个包含三个 AbstractClass 指针的数组,动态分配每个派生类类型的一个对象,并将其地址赋给数组元素。最后,通过数组元素中存储的指针调用 f() 函数,并释放动态分配的内存。

61、设计并创建一个汽车传感器系统。添加另一个名为计算机的组件,该组件通过传感器监控各个发动机组件。

  • 此项目要求设计并创建汽车传感器系统
  • 需添加一个名为“计算机”的组件
  • 该组件能通过传感器对发动机各组件进行监控

62、燃油系统:设计并创建一个油轮船舶油舱的填充、排放、液位控制和指示系统。假设油轮有六个油舱。每个油舱可以从右舷或左舷的供油总管进行填充和排放。供油系统由16个阀门、2个泵和6个油舱液位指示器组成。阀门和泵都是远程控制的。阀门可以是打开或关闭状态。泵可以是开启或关闭状态。当泵开启时,它可以处于两种速度状态之一:慢速和快速,以及两种方向状态之一:排放和填充。当泵处于排放方向时,它从油舱一侧吸取油;当泵处于填充方向时,它从船体一侧吸取油。现在,要快速填充油舱A,应该如何操作?

该系统的设计和创建需考虑油轮六个油舱的填充、排放、液位控制和指示。系统由16个远程控制阀门、2个远程控制泵和6个液位指示器组成。

  • 阀门状态 :开闭和关闭状态
  • 泵状态 :开启和关闭状态;开启时还包括:
  • 快速和慢速
  • 排放、填充方向状态

快速填充油舱A的操作步骤如下

  1. 打开阀门:1、2、14、16、13、15
  2. 将泵 P2 和 P4 设置为:快速 / 填充模式
  3. 监控油舱 A 的液位指示器

63、扩展一个Foo类的功能,使其包含以下重载算术运算符:*、/、%。编写一个main()函数来测试这些运算符。

以下是实现扩展Foo类功能以包含重载算术运算符 * / % ,并编写 main() 函数进行测试的代码:

头文件 foo.h

#ifndef _FOO_H
#define _FOO_H

class Foo {
public:
    Foo(int ival = 0);
    ~Foo();
    int getI();
    Foo& operator=(int _i);

    friend int operator+(Foo& lhs, Foo& rhs);
    friend int operator-(Foo& lhs, Foo& rhs);
    friend int operator*(Foo& lhs, Foo& rhs);
    friend int operator/(Foo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值