水满秋池 2022-05-16 11:26 采纳率: 100%
浏览 46
已结题

关于一个多态性编程测试

定义描述交通工具的抽象类Vehicle,其中包含纯虚函数introduce用于介绍工具的概况。
由Vehicle类派生出两种交通工具——飞机类Plane和火车类Train,再定义普通函数void info(Vehilce * veh),该函数能根据传递的对象正确调用属于所传对象的introduce函数。主函数中,输入字符串飞机或火车,在堆空间上生成相应的对象,传递该对象给info函数,信息显示结束后释放堆空间。

  • 写回答

1条回答 默认 最新

  • 丨秋水丨 2022-05-16 12:16
    关注
    
    #include<iostream>
    #include<string>
    using namespace std;
    class Vehicle
    {
    public:
        virtual void introduce() const = 0;
    };
    
    class Plane : public Vehicle
    {
    public:
        virtual void introduce() const override
        {
            cout << "一架飞机" << endl;
        }
    };
    
    class Train : public Vehicle
    {
    public:
        virtual void introduce() const override
        {
            cout << "一列火车" << endl;
        }
    };
    
    void info(Vehicle* veh)
    {
        veh->introduce();
    }
    
    int main()
    {
        string input;
        while (cin >> input)
        {
            Vehicle* v = nullptr;
            if (input == "飞机")
            {
                v = new Plane();
            }
            else if (input == "火车")
            {
                v = new Train();
            }
            if (v)
            {
                info(v);
                delete v;
            }
        }
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月16日
  • 已采纳回答 5月16日
  • 创建了问题 5月16日

悬赏问题

  • ¥15 python+selenium,在新增时弹出了一个输入框
  • ¥15 苹果验机结果的api接口哪里有??单次调用1毛钱及以下。
  • ¥20 学生成绩管理系统设计
  • ¥15 来一个cc穿盾脚本开发者
  • ¥15 CST2023安装报错
  • ¥15 使用diffusionbert生成文字 结果是PAD和UNK怎么办
  • ¥15 有人懂怎么做大模型的客服系统吗?卡住了卡住了
  • ¥20 firefly-rk3399上启动卡住了
  • ¥15 如何删除这个虚拟音频
  • ¥50 hyper默认的default switch